在 PHP 中设置 HTTP 响应代码(在 Apache 下)
Setting a HTTP response code in PHP (under Apache)
给定以下两种在PHP(具体在Apache下)设置HTTP响应码的方法:
方法一:
http_response_code(404);
方法二:
header("HTTP/1.0 404 Not Found");
我的问题是:
- 除了
http_response_code
仅在 PHP 5.4 或更高版本中可用之外,这两种方法之间有什么区别以及 why/when 使用一种优于另一种?
- 使用第一个例子时Reason Phrase是从哪里来的? (我已经检查过,原因短语 是从某处生成的 )
因为我无缘无故被否决了,所以我通过搜索 PHP 源代码设法自己回答了这个问题。希望这可以作为其他尝试解决此问题的人的参考。
这两种方法在功能上本质上是等价的。 http_response_code
基本上是一种 shorthand 编写 http 状态 header 的方式,还有一个额外的好处,即 PHP 将计算出合适的 Reason Phrase to provide by matching your response code to one of the values in an enumeration it maintains within php-src/main/http_status_codes.h.
请注意,这意味着您的响应代码必须与 PHP 知道的响应代码匹配。您无法使用此方法创建自己的响应代码,但可以使用 header
方法。另请注意,http_response_code
仅在 PHP 5.4.0 及更高版本中可用。
总结-http_response_code
和header
设置响应码的区别:
使用 http_response_code
将导致 PHP 匹配 hard-coded 原因短语列表中的原因短语并将其应用到 PHP源代码.
由于上面的第 1 点,如果您使用 http_response_code
,您必须设置一个 PHP 知道的代码。您无法设置自己的自定义代码,但如果您使用 header
函数,则可以设置自定义代码(和原因短语)。
http_response_code
仅适用于 PHP 5.4.0 及更高版本
给定以下两种在PHP(具体在Apache下)设置HTTP响应码的方法:
方法一:
http_response_code(404);
方法二:
header("HTTP/1.0 404 Not Found");
我的问题是:
- 除了
http_response_code
仅在 PHP 5.4 或更高版本中可用之外,这两种方法之间有什么区别以及 why/when 使用一种优于另一种? - 使用第一个例子时Reason Phrase是从哪里来的? (我已经检查过,原因短语 是从某处生成的 )
因为我无缘无故被否决了,所以我通过搜索 PHP 源代码设法自己回答了这个问题。希望这可以作为其他尝试解决此问题的人的参考。
这两种方法在功能上本质上是等价的。 http_response_code
基本上是一种 shorthand 编写 http 状态 header 的方式,还有一个额外的好处,即 PHP 将计算出合适的 Reason Phrase to provide by matching your response code to one of the values in an enumeration it maintains within php-src/main/http_status_codes.h.
请注意,这意味着您的响应代码必须与 PHP 知道的响应代码匹配。您无法使用此方法创建自己的响应代码,但可以使用 header
方法。另请注意,http_response_code
仅在 PHP 5.4.0 及更高版本中可用。
总结-http_response_code
和header
设置响应码的区别:
使用
http_response_code
将导致 PHP 匹配 hard-coded 原因短语列表中的原因短语并将其应用到 PHP源代码.由于上面的第 1 点,如果您使用
http_response_code
,您必须设置一个 PHP 知道的代码。您无法设置自己的自定义代码,但如果您使用header
函数,则可以设置自定义代码(和原因短语)。http_response_code
仅适用于 PHP 5.4.0 及更高版本