我正在尝试将PHP脚本中的响应代码设置为200.稍后我设置了一个Location
标头,将其设置为302.根据文档:
它不仅将此标头发送回浏览器,而且还将其发送回浏览器 返回REDIRECT(302)状态代码到浏览器,除非201或 已经设置了3xx状态代码。
是否无法将标头设置为200并且没有location
标头覆盖它?我已经尝试在位置标题之后设置响应代码标题,但这不起作用(可能是因为位置标题已经与包含“找到”HTML位的正文一起发送)。
我可以使用201作为响应代码,因为加入脚本的应用程序只检查任何2xx代码。但是,根据HTTP 1.1规范:
原始服务器必须在返回201状态代码之前创建资源。
但我没有创造任何东西。这是一个问题,还是我可以逃脱它?
答案 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。
如果您不想重定向,则只需不设置位置!