php标题状态描述

时间:2013-02-14 19:10:47

标签: php curl http-headers

只是设置一个超级简单的API,但我有一个问题。 我正在调用api,它运行正常,但我想知道正在返回的头状态代码。

在所有错误上,我想将错误设置为500:

header('HTTP 1.1 500 invalid signature');

这是我很好奇的描述。有没有办法使用CuRL获取该文本? 我可以得到代码没有问题,而不是文本。

或者某人可以推荐并更简单地将状态设置为500,并将字符串传递回api文件,以显示发生了什么错误?

2 个答案:

答案 0 :(得分:1)

如果我是你,我会使用其他一些自定义标题来显示状态消息:

header('HTTP/1.1 500 Internal Server Error');
header('My-Super-Custom-Error-Msg: invalid signature');

答案 1 :(得分:1)

cURL会在您设置CURLOPT_HEADER选项时返回包含标题的完整响应。标题和内容由两个CRLF分隔;标题本身使用CRLF分隔。此信息应足以从响应中解析状态标头:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://localhost/err-500.php");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($ch);

list($header, $body) = explode("\r\n\r\n", $data, 2);
$header = explode("\r\n", $header);

echo $header[0];

输出:

HTTP/1.1 500 Internal Server Error

如果您有兴趣抛出错误,您的脚本可以发出500响应状态以及带有一行代码的自定义标头:

或者您可以使用header()功能设置响应代码:

header("X-Error-Message: Invalid Signature", true, 500);

PHP填写状态行的1.1Internal Server Error部分:

HTTP/1.1 500 Internal Server Error
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.3.19
X-Powered-By: ASP.NET
X-Error-Message: Invalid Signature
Date: Thu, 14 Feb 2013 21:11:00 GMT
Content-Length: 100