给出以下两种在PHP中设置HTTP响应代码的方法(特别是在Apache下):
方法1:
http_response_code(404);
Run Code Online (Sandbox Code Playgroud)
方法2:
header("HTTP/1.0 404 Not Found");
Run Code Online (Sandbox Code Playgroud)
我的问题是:
http_response_code仅在PHP 5.4或更高版本中可用的事实之外,这两种方法之间有什么区别以及为什么/何时使用另一种方法?由于我没有明显的理由被遗忘,我已经设法通过浏览PHP源代码来回答这个问题.希望这可以作为其他任何试图解决这个问题的人的参考.
这两种方法在功能上基本相同.http_response_code基本上是写一个http状态标题的简写方法,还有一个额外的好处,即PHP将通过将你的响应代码与它在php-src/main/http_status_codes中维护的枚举中的一个值相匹配来提供合适的Reason Phrase..h.
请注意,这意味着您的响应代码必须与PHP知道的响应代码相匹配.您无法使用此方法创建自己的响应代码,但是您可以使用该header方法.另请注意,http_response_code仅适用于PHP 5.4.0及更高版本.
总结 - 设置响应代码http_response_code和header设置响应代码之间的差异:
使用http_response_code将导致PHP匹配并从原始短语列表中应用原因短语,这些原因短语被硬编码到PHP源代码中.
由于上面的第1点,如果您使用,http_response_code您必须设置PHP知道的代码.您无法设置自己的自定义代码,但是如果您使用该header功能,则可以设置自定义代码(和原因短语).
http_response_code 仅适用于PHP 5.4.0及更高版本