首页/网络/协议速查/405 Method Not Allowed 方法不允许
HTTP 方法与状态码91 条

405 Method Not Allowed 方法不允许

目标资源不支持请求使用的方法;响应必须(MUST)带 Allow 头列出支持的方法。

协议速查网络更新于 2026-10-13

405 方法不被允许

405 Method Not Allowed 表示目标资源存在,但它不支持请求所用的方法。按规范要求,返回 405 的响应必须带 Allow 头,列出该资源实际支持的方法。它与 404 的区别在于资源是存在的,与 501 的区别在于服务器认识这个方法、只是这个资源不提供。写接口时如果路由存在但只允许 GET,收到 POST 就应当返回 405 而不是 404。

基本信息

名称405 Method Not Allowed
作用方法不被该资源支持
规范RFC 9110 第 15.5.6 节
必须携带Allow 响应头,列出该资源支持的方法
典型场景接口只开放读取,收到写入方法;网关方法与后端路由不一致
常见混淆404 是资源不存在,501 是服务器不认识该方法

探测与确认

探测与确认
curl -si -X DELETE https://api.example.com/users/101   # 用不支持的方法探测
# HTTP/1.1 405 Method Not Allowed
# Allow: GET, PUT                                  # 该资源实际支持的方法
curl -si -X OPTIONS https://api.example.com/users/101 | grep -i allow   # 先用 OPTIONS 看支持哪些方法
curl -si -X POST https://api.example.com/users/101   # 对比:POST 被拒时同样是 405

与相近状态码对照

状态码含义判断要点
404 Not Found资源路径不存在路由未注册或写错路径,Allow 头不会出现
405 Method Not Allowed资源存在但不支持该方法一定带 Allow,说明路由注册成功
501 Not Implemented服务器不认识该方法方法名本身不被支持,与具体资源无关
400 Bad Request请求本身无法解析常因方法名写错或报文体损坏
415 Unsupported Media Type请求体媒体类型不被支持方法与路径都对,只是 Content-Type 不符

典型使用场景

  • 只读接口被写入方法访问:如报表接口只提供 GET,收到 PUT 应回 405
  • 反向代理或网关改写了请求方法,后端路由因此不匹配
  • 前后端联调时确认路由是否真的注册成功,用 404 与 405 区分两种失败
  • CORS 预检里 Access-Control-Allow-Methods 与真实方法不一致,真实请求落回 405
  • 对写接口做安全测试时探测可用的方法集合
405 与 404 的区分对排查非常关键:看到 405 说明请求已经打到正确的处理器上,问题在方法映射;看到 404 才要怀疑路径、域名与服务是否匹配。

易错点

  • 服务端返回 405 却不带 Allow 头,客户端无法得知该用哪个方法,属于不符合规范的行为
  • 反向代理把 POST 重写成 GET 或方法透传错误,后端返回 405,现象会把排查方向引到业务代码上
  • 所有不匹配的请求都统一返回 404,安全上看似少暴露信息,但联调与线上排障成本明显上升
  • 把 405 与 501 混为一谈,前者改路由或方法映射即可,后者要改服务器或框架对方法的支持

数据来源与参考

  • RFC 9110 §15.5.6 405 Method Not Allowed

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌