php – 在HTTP 202中使用位置标头是否符合RFC?
与我的同事在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响应? 非常感谢你的时间.
最后,我收到了R. Fielding的回复:
因此,在202 Accepted响应中不应使用Location头. PHP家伙做了正确的解释. 编辑2017年3月:对不起,我忘了添加在同一个线程中交换的其他消息,所以我现在发布记录: 我:在section 4.1 of the RFC 7240作者(J. Snell)给出了一个使用位置标题在202接受响应的例子.他错了吗就像许多人从RFC 7231中了解这个行为一样.你可以向我发送有关这个有争议的问题的任何参考? 罗伊:这个例子没有指示,所以他没有错 例如,如果他说用户代理会使用它 PHP假定位置仅在201和 没有争议为了成为标准的一部分,在最少两个独立的实现必须显示相同行为.在这种情况下,没有. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |