501 是什么
501 Not Implemented 表示服务器不支持完成该请求所需的功能:典型情况是它根本不认识请求里用的方法,或者缺少必要的能力。它与 405 的区别在于责任范围——405 说明服务器认识这个方法,只是这个资源不允许用;501 则是服务器整体上没实现这个方法。规范定义在 RFC 9110 第 15.6.2 节。
基本信息
| 状态码 | 501 Not Implemented |
|---|---|
| 语义 | 服务器不支持该功能或方法 |
| 规范 | RFC 9110 §15.6.2 |
| 与 405 区别 | 405 是资源不支持该方法 |
| 是否可缓存 | 属于默认可启发式缓存的响应码 |
| 常见来源 | 极简静态服务器、老设备的网页管理界面 |
复现:对只支持基本方法的服务器发新方法
复现:对只支持基本方法的服务器发新方法
curl -si -X PATCH https://legacy.example.com/ -d '{}'
# HTTP/1.1 501 Not Implemented
curl -si -X OPTIONS https://legacy.example.com/ | head -5 # 看是否声明支持的方法三个易混状态码
| 状态码 | 含义 | 判断要点 |
|---|---|---|
| 405 | 资源不支持该方法 | 换方法或换资源 |
| 501 | 服务器整体不认识该方法 | 换服务或换实现 |
| 400 | 请求本身有语法问题 | 检查报文格式 |
典型使用场景
- 接入老系统:确认对方支持哪些方法,调整客户端调用方式
- 排查接口 501:确认是否被网关路由到了能力不足的旧服务
- 协议合规检查:核对服务端是否正确声明支持的方法集合
- 灰度上线:新接口误路由时快速识别为配置问题
- 测试用例设计:把不支持的方法作为边界用例覆盖
如果新接口突然返回 501,优先怀疑路由:请求可能被转发到了那台只支持基本方法的老服务上,而不是新接口本身有实现缺陷。判断办法是比较直接访问后端与经过网关两条路径的结果,差异所在就是问题所在。
排障顺序建议是:先确认服务端有没有实现该方法,再确认请求是否被中间层改写(例如把方法转换成了别的方式),最后核对路由目标是否正确。这三种原因对应的处理团队完全不同,一上来就改应用代码通常要白跑一趟。