在RFC 2616中,400响应代码用于语法错误.
由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.
RFC 7231扩展了400的适用性.该规范给出了一些其他客户端错误的例子,但我不确定它们的含义.
400(错误请求)状态代码指示服务器由于被认为是客户端错误(例如,格式错误的请求语法,无效的请求消息成帧或欺骗性请求路由)而不能或不会处理该请求.
什么构成"欺骗性请求路由"?
例如,这可能与 CDN 相关。请参阅RFC 3568。
第 4.1.2 节对我来说很突出:
该技术涉及使用 HTTP [4] 的任务,例如 Cookie、语言和用户代理,以便选择代理。在 [20] 中提供了一些使用这种技术的例子。
当系统依赖包括自定义 HTTP 标头在内的信息进行决策时,所引用的示例(“欺骗性请求路由”)就具有相关性。当此类标头不存在、陈旧、不正确或无法处理时。作为一般规则,来自公共 Internet 的任何格式错误或“错误”的内容都可以安全地被假定为恶意(或“欺骗性”)。
另一个例子:中间人窃取了我的上行链路并劫持了我的会话 cookie。尝试使用该 cookie 访问该站点,但系统突然看到来自两个不同 IP 地址的具有相同令牌的请求。