如何在PHP中发送状态代码而不维护状态名称数组?

2022-08-30 13:29:11

我想做的就是从PHP发送状态代码 - 但以通用的方式。两者都应该工作,以及任何其他有效的HTTP状态代码。404Router::statusCode(404)Router::statusCode(403)

我知道,您可以将状态代码指定为标头的第三个参数。可悲的是,这仅在您指定.因此,调用不起作用stringheader('', false, 404)

此外,我知道,可以通过带有状态行的呼叫发送状态代码:headerheader('HTTP/1.1 404 Not Found')

但要做到这一点,我必须为所有状态代码()维护一系列原因短语()。我不喜欢这个想法,因为它在某种程度上是PHP本身已经做的(对于第三个参数)的重复。Not Found404header

所以,我的问题是:有没有简单明了的方法在PHP中发送状态代码?


答案 1

PHP 中有一个新功能,>= 5.4.0 http_response_code

只需执行.http_response_code(404)

如果您使用的是较低的 PHP 版本,请尝试(请注意字符串中的空格)。header(' ', true, 404);

如果您还想设置原因短语,请尝试:

header('HTTP/ 433 Reason Phrase As You Wish');

答案 2

代码的实际文本无关紧要。你可以做

header('The goggles, they do nawtink!', true, 404);

它仍然会被浏览器视为404 - 重要的是代码。


推荐