HTTP 状态码 405 Not Allowed(方法不被允许)是 客户端请求使用了服务器不支持的 HTTP 方法 时返回的响应。它属于 4xx 客户端错误,意味着请求本身有问题,需要修改请求方法,而不是服务器故障。


一、含义

  • 状态码:405
  • 说明:客户端请求使用了错误的 HTTP 方法(GET、POST、PUT、DELETE、PATCH 等)
  • 典型场景
    • GET 请求需要 POST 的接口
    • DELETE 请求不支持删除操作的 URL

二、HTTP 方法示例

方法是否被允许描述
GET获取资源
POST创建资源
PUT更新资源
DELETE删除资源
PATCH局部更新资源

405 表示请求方法与服务器定义的资源操作不匹配。


三、响应头

  • 服务器通常会返回 Allow 头,告诉客户端允许的 HTTP 方法:
HTTP/1.1 405 Method Not Allowed
Allow: GET, POST

  • 根据 Allow 指定的方法修改请求即可。

四、常见原因

  1. 前端请求方法错误
    • 请求用 GET,接口只支持 POST
    • 请求用 POST,接口只支持 PUTPATCH
  2. 服务器路由配置错误
    • 后端没有对应方法的路由处理
    • 框架默认拦截了某些方法
  3. 跨域请求问题(CORS)
    • OPTIONS 预检请求未被允许
    • 会导致浏览器报 405

五、解决方法

  1. 检查请求方法
    • 与接口文档确认使用正确的 HTTP 方法
  2. 检查路由配置
    • Spring Boot、Express 等框架确保对应方法已定义
    @PostMapping("/api/data") // POST 方法 public ResponseEntity<?> createData() { ... }
  3. 跨域问题
    • 后端允许跨域请求,并允许对应 HTTP 方法
  4. 参考响应头 Allow
    • 根据 Allow 指定的方法修改请求