gpt4 book ai didi

language-agnostic - HTTP 状态 header 的语法

转载 作者:可可西里 更新时间:2023-11-01 15:16:52 28 4
gpt4 key购买 nike

有很多方法可以编写 HTTP 状态 header :

HTTP/1.1 404 Not Found
Status: 404
Status: 404 Not Found

但哪种方式是语义正确且符合规范的方式?

编辑:状态标题是指 this ,使用诸如 PHP 的 header() 之类的函数。

最佳答案

一段时间后添加一些信息,因为我在研究相关内容时遇到了这个问题。

我相信 Status header 字段最初是作为 CGI 规范 RFC 3875 的一部分发明的:

https://www.rfc-editor.org/rfc/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 状态行中显示的默认值。通常服务器会缓冲脚本的结果并为客户端发出一个新的 header 。这是一个有效的 HTTP header ,它以修改后的 HTTP 状态行开头并省略脚本“​​Status:” header 字段(加上 RFC 强制要求的一些其他转换)。

所以您的所有示例在 CGI 脚本 中都是有效的,但只有第一个在 HTTP header 中真正有效。后两者仅在来自 CGI 脚本(或可能是 FastCGI 应用程序)时有效。

CGI 脚本也可以在“未解析的 header ”(NPH) 模式下运行,当它生成一个完整且有效的 HTTP header 时,Web 服务器将其逐字传递给客户端。因此,这不应包含 Status: header 字段。

请注意,我感兴趣的是,如果 NPH 脚本有点错误并发出 Status: header 字段,可能除了 HTTP 状态行之外,哪个状态应该获胜。我找不到任何明确的指示,我怀疑它留给了解析输出的任何实现,无论是客户端还是服务器。

关于language-agnostic - HTTP 状态 header 的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1009840/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com