有很多方法可以编写HTTP状态标头:
HTTP/1.1 404 Not Found
Status: 404
Status: 404 Not Found
但是哪种语义正确且符合规范?
编辑:按状态标题我的意思是this,使用PHP的header()
等函数。
答案 0 :(得分:4)
一段时间之后添加一些信息,因为我在研究相关内容时遇到了这个问题。
我认为Status头字段最初是作为CGI规范RFC 3875的一部分发明的:
https://tools.ietf.org/html/rfc3875#section-6.3.3
引用:
The Status header field contains a 3-digit integer result code that
indicates the level of success of the script's attempt to handle the
request.
Status = "Status:" status-code SP reason-phrase NL
status-code = "200" | "302" | "400" | "501" | extension-code
extension-code = 3digit
reason-phrase = *TEXT
它允许CGI脚本将状态代码返回到Web服务器,该代码覆盖HTTP状态行中显示的默认值。通常,服务器缓冲脚本的结果并为客户端发出新标头。这是一个有效的HTTP标头,以修改后的HTTP状态行开头,省略脚本“Status:”标题字段(加上RFC要求的其他一些转换)。
因此,所有示例都可以从 CGI脚本中有效,但只有第一个示例在HTTP标头中才有效。后两者仅来自CGI脚本(或者可能是FastCGI应用程序)。
当CGI脚本生成完整且有效的HTTP标头(Web服务器逐字传递给客户端)时,它也可以在“非解析标头”(NPH)模式下运行。因此,这不应包括Status:标头字段。
注意,我感兴趣的是,如果NPH脚本有点错误并且发出Status:头字段,可能除了HTTP状态行之外,应该获得哪种状态。我找不到任何明确的指示,我怀疑它是由解析输出的任何东西实现的,无论是客户端还是服务器。
答案 1 :(得分:3)
由于http://tools.ietf.org/html/rfc2616#section-6以及更具体的http://tools.ietf.org/html/rfc2616#section-6.1在指明状态代码时未提及使用“状态:”,并且由于http://www.iana.org/assignments/message-headers/message-headers.xml处的正式标头列表未提及“状态“,我倾向于认为它不应该作为标题提供。
答案 2 :(得分:1)
我找到答案的最接近的是Fast CGI spec,它指出通过状态和位置标头设置状态代码。
答案 3 :(得分:0)
其中很多是非常随意的字符串,但这里有常用的w3c规范