405 Method Not Allowed는 서버가 요청의 HTTP 메서드 자체는 알지만, 해당 리소스에 대해서는 그 메서드를 허용하지 않을 때 반환됩니다. 예를 들어 POST만 받는 엔드포인트에 GET을 보내는 경우입니다.
규격상 405 응답에는 그 리소스가 실제로 허용하는 메서드 목록을 담은 Allow 헤더가 반드시 포함되어야 합니다. 이를 통해 클라이언트는 어떤 메서드로 다시 시도해야 하는지 알 수 있습니다.
DELETE /api/articles HTTP/1.1
Host: api.example.comHTTP/1.1 405 Method Not Allowed
Allow: GET, POST
Content-Type: application/json
{"error":"method_not_allowed","allowed":["GET","POST"]}app.route('/api/articles')
.get(list)
.post(create)
.all((req, res) => res.set('Allow', 'GET, POST').sendStatus(405));location /api/articles {
limit_except GET POST { deny all; } # others -> 405
}