给出以下两种在 PHP 中设置 HTTP 响应代码的方法(具体来说,在 Apache 下):
方法一:
http_response_code(404);
方法二:
header("HTTP/1.0 404 Not Found");
我的问题是:
- 除了这个事实之外
http_response_code
仅在 PHP 5.4 或更高版本中可用,这两种方法之间有什么区别以及为什么/何时使用其中一种?
- 哪里有原因短语 http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1使用第一个示例时来自? (我已经检查过,并且有一个原因短语is从某处生成)
由于我无缘无故地被否决了,我自己通过搜索 PHP 源代码设法回答了这个问题。希望这可以为其他尝试解决此问题的人提供参考。
这两种方法在功能上本质上是等效的。http_response_code
基本上是一种编写 http 状态标头的简写方式,额外的好处是 PHP 会计算出合适的原因短语 https://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html通过将您的响应代码与它维护的枚举中的值之一进行匹配来提供php-src/main/http_status_codes.h https://github.com/php/php-src/blob/master/main/http_status_codes.h.
请注意,这意味着您的响应代码必须与 PHP 知道的响应代码相匹配。您无法使用此方法创建自己的响应代码,但是您可以使用header
方法。另请注意http_response_code
仅适用于 PHP 5.4.0 及更高版本。
总结 - 之间的差异http_response_code
and header
用于设置响应代码:
Using http_response_code
将导致 PHP 匹配并应用硬编码到 PHP 源代码中的原因短语列表中的原因短语。
由于上述第 1 点,如果您使用http_response_code
您必须设置 PHP 知道的代码。您无法设置自己的自定义代码,但是如果您使用header
功能。
http_response_code
仅适用于 PHP 5.4.0 及更高版本
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)