无法在PHP中将响应代码设置为200

时间:2011-08-02 18:53:21

标签: php http-headers http-status-codes

我正在尝试将PHP脚本中的响应代码设置为200.稍后我设置了一个Location标头,将其设置为302.根据文档:

  

它不仅将此标头发送回浏览器,而且还将其发送回浏览器   返回REDIRECT(302)状态代码到浏览器,除非201或   已经设置了3xx状态代码。

是否无法将标头设置为200并且没有location标头覆盖它?我已经尝试在位置标题之后设置响应代码标题,但这不起作用(可能是因为位置标题已经与包含“找到”HTML位的正文一起发送)。

我可以使用201作为响应代码,因为加入脚本的应用程序只检查任何2xx代码。但是,根据HTTP 1.1规范:

  

原始服务器必须在返回201状态代码之前创建资源。

但我没有创造任何东西。这是一个问题,还是我可以逃脱它?

3 个答案:

答案 0 :(得分:2)

根据RFC 2616,带有重定向的200状态代码无效(请参阅 10.3重定向3xx )。重定向时,只有3xx代码有效。

如果完成任务,您可以继续发送任意2xx代码,但这将超出标准,理论上并非所有用户代理都可靠。

答案 1 :(得分:0)

好吧,我找到了我特定问题的答案。我最初的问题是,一个地方需要redirect标题而另一个地方需要HTTP/1.1 200 OK标题,因此我可以根据来源使用其中一个。

然而,在尝试201选项之后,这也没有用,(仍然是302)所以我不知道这是一个错误,还是我做错了什么。或者什么。

答案 2 :(得分:0)

header()中的“Location:”参数用于重定向。重定向是HTTP请求者(即用户代理)向服务器发送新请求的指令,其中包含“位置”中给出的信息。

因此,任何时候都设置200的状态代码是一个错误,必须予以忽视;应默认为302。

如果您不想重定向,则只需不设置位置!