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指定的方法修改请求即可。
四、常见原因
- 前端请求方法错误
- 请求用
GET,接口只支持POST - 请求用
POST,接口只支持PUT或PATCH
- 请求用
- 服务器路由配置错误
- 后端没有对应方法的路由处理
- 框架默认拦截了某些方法
- 跨域请求问题(CORS)
- OPTIONS 预检请求未被允许
- 会导致浏览器报 405
五、解决方法
- 检查请求方法
- 与接口文档确认使用正确的 HTTP 方法
- 检查路由配置
- Spring Boot、Express 等框架确保对应方法已定义
@PostMapping("/api/data") // POST 方法 public ResponseEntity<?> createData() { ... } - 跨域问题
- 后端允许跨域请求,并允许对应 HTTP 方法
- 参考响应头 Allow
- 根据
Allow指定的方法修改请求
- 根据