我目前正在调试来自API的令人惊讶的“错误请求”响应。
请求:
POST /path HTTP/1.1
...
响应:
HTTP/1.1 421 Misdirected Request
Date: Fri, 30 Nov 2018 21:59:12 GMT
...
Via: https/1.1 subdomain.example.org (ApacheTrafficServer/7.1.4)
...
根据我的研究,HTTP状态代码421仅与http/2 specification一起添加。如您所见,我的客户端正在发送HTTP1.1请求。
在响应HTTPS / 1.1请求时使用它有意义吗?那里是什么意思?
更新:进一步的研究表明,此421响应是由无效的CSRF令牌和标头中的Cookie值触发的,使用可验证的有效组合重试请求将返回预期结果{{1} }。不幸的是,这并不能真正解释任何问题。
答案 0 :(得分:2)
421,允许重新使用连接。如果客户端错误地重用了连接(like Firefox used to),则服务器应对此进行响应。
但是,这并不意味着它是仅HTTP / 2的状态代码。例如,如果负载平衡器接收HTTP / 2请求,然后通过HTTP / 1.1将它们传递给后端服务器,则这些后端服务器之一可以认为如果HTTP / 1.1错误地发送了该请求,则可以拒绝该请求。如您所见,您的请求是通过Apache Traffic Server发送的,所以我怀疑这是在这里发生的。