与我的同事在202接受回复中使用位置标题有很好的概念性讨论.
故事从here开始分析PHP header()函数的行为.有趣的摘录:
第二个特殊情况是“位置:”标题.它不仅将此标题发回浏览器,而且还会向浏览器返回REDIRECT(302)状态码,除非已设置了201或3xx状态码.
它们在此默认行为中未包含202状态代码.似乎他们不希望202回应有一个位置,确实:
header("HTTP/1.1 202");
header("Location: http://example.com");
将客户端重定向到位置URL.当然,可以用header()函数的第三个参数来改变这个行为,但是引起我注意的是:为什么他们明白,默认情况下,202不会保留一个Location头?
然后我查看了RFC的官方含义202的状态.有趣的摘录:
该响应返回的实体应该包括请求的当前状态的指示,以及指向状态监视器的指针,或者用户何时可以期望请求被满足的估计.
它没有明确地引用位置标题,就像前面(在相同的RFC文档)201响应中一样.这可能是为什么PHP家伙了解202响应不应该保持位置标题的原因.一个指针会被解释为位置头还是PHP家伙做错了假设?如果标准允许位置标题与202响应:应该不是官方文档更明确的像201响应定义?
最后我审查了最多的recently RFC版本,并在编辑中找到一点变化:
与此响应发送的表示应描述请求的当前状态,并指向(或嵌入)状态监视器,该状态监视器向用户提供何时将满足请求的估计.
再次,它不够明确地假定该点意味着位置标题.
简而言之,经过以上修订:我是RFC符合使用位置标题与202响应?
非常感谢你的时间.