加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在HTTP 202中使用位置标头是否符合RFC?

发布时间:2020-12-13 16:38:43 所属栏目:PHP教程 来源:网络整理
导读:与我的同事在202接受回复中使用位置标题有很好的概念性讨论. 故事从here开始分析PHP header()函数的行为.有趣的摘录: 第二个特殊情况是“位置:”标题.它不仅将此标题发回浏览器,而且还会向浏览器返回REDIRECT(302)状态码,除非已设置了201或3xx状态码. 它们
与我的同事在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 is a success status. The pointer mentioned is just hypertext in the body of the response.
A 303 should be sent if you want to use Location to redirect the client to another resource. The result of the redirected request can be a 202.

….Roy

因此,在202 Accepted响应中不应使用Location头. PHP家伙做了正确的解释.

编辑2017年3月:对不起,我忘了添加在同一个线程中交换的其他消息,所以我现在发布记录:

我:在section 4.1 of the RFC 7240作者(J. Snell)给出了一个使用位置标题在202接受响应的例子.他错了吗就像许多人从RFC 7231中了解这个行为一样.你可以向我发送有关这个有争议的问题的任何参考?

罗伊:这个例子没有指示,所以他没有错
因为他不说什么意思位置可以任意发送
信息.这仅仅是为某些状态代码定义.

例如,如果他说用户代理会使用它
该位置字段为用户提供状态指示符,然后
他会错的这可能是一个好主意,但不是
标准的一部分.

PHP假定位置仅在201和
3xx响应,但它是允许的,因为它的内部API
不是HTTP;它会将流转换为HTTP.

没有争议为了成为标准的一部分,在最少两个独立的实现必须显示相同行为.在这种情况下,没有.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读