gpt4 book ai didi

PHP:如何发送 HTTP 响应代码?

转载 作者:IT老高 更新时间:2023-10-28 11:39:16 26 4
gpt4 key购买 nike

我有一个 PHP 脚本需要使用 HTTP 响应代码(状态代码)做出响应,例如 HTTP 200 OK,或者一些 4XX 或 5XX 代码。

我如何在 PHP 中做到这一点?

最佳答案

我刚刚发现了这个问题,并认为它需要一个更全面的答案:

PHP 5.4 开始,有三种方法可以完成此操作:

自行组装响应代码(PHP >= 4.0)

header()函数有一个特殊的用例,可以检测 HTTP 响应行并让您将其替换为自定义响应行

header("HTTP/1.1 200 OK");

但是,这需要对 (Fast)CGI PHP 进行特殊处理:

$sapi_type = php_sapi_name();
if (substr($sapi_type, 0, 3) == 'cgi')
header("Status: 404 Not Found");
else
header("HTTP/1.1 404 Not Found");

注意:根据HTTP RFC原因短语可以是任何自定义字符串(符合标准),但为了客户端的兼容性我不建议放一个随机字符串。 p>

注意: php_sapi_name()需要 PHP 4.0.1

头函数的第三个参数 (PHP >= 4.3)

使用第一个变体时显然存在一些问题。我认为最大的问题是它部分由 PHP 或 Web 服务器解析,并且文档记录不佳。

从 4.3 开始,header 函数有第三个参数,可以让您轻松地设置响应代码,但使用它需要第一个参数是非空字符串。这里有两个选项:

header(':', true, 404);
header('X-PHP-Response-Code: 404', true, 404);

我推荐第二个。第一个确实适用于我测试过的所有浏览器,但一些小型浏览器或网络爬虫可能会出现标题行仅包含冒号的问题。头字段名称在第 2 位。变体当然没有以任何方式标准化并且可以修改,我只是选择了一个有希望的描述性名称。

http_response_code 函数 (PHP >= 5.4)

http_response_code()函数是在 PHP 5.4 中引入的,它使事情很多变得更容易了。

http_response_code(404);

就是这样。

兼容性

当我需要低于 5.4 的兼容性但想要"new"http_response_code 函数的功能时,这是我编写的一个函数。我相信 PHP 4.3 的向后兼容性绰绰有余,但你永远不知道......

// For 4.3.0 <= PHP <= 5.4.0
if (!function_exists('http_response_code'))
{
function http_response_code($newcode = NULL)
{
static $code = 200;
if($newcode !== NULL)
{
header('X-PHP-Response-Code: '.$newcode, true, $newcode);
if(!headers_sent())
$code = $newcode;
}
return $code;
}
}

关于PHP:如何发送 HTTP 响应代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258634/

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