PHP处理HTTP头部信息

3

如何在使用PHP进行POST请求后获取HTTP响应头?


嗯...我认为你应该给出*更多的细节。例如代码。 - Martin Thurau
我有一个POST请求需要发送到第二个页面,希望以某种变量形式发送请求并获取第二个页面的响应头。这是我通过CURL学习到的方法http://it.toolbox.com/wiki/index.php/Use_curl_from_PHP-processing_response_headers,但我正在寻找更简单的方法。 - Naumaan
看起来这个类已经很好地把 curl 的东西抽象掉了。使用它有什么问题吗? - nategood
问题在于我身处的代理服务器需要进行 HTTP 认证。该代理服务器不支持直接进行认证,而且我也不会使用 CURL 更改脚本。 - Naumaan
啊,我希望我能编辑这个问题。 - jason
所以你需要设置一个Proxy-Authenticate头吗?你需要检测到407“代理身份验证要求”响应吗?需要更多关于整体目标的信息,而不仅仅是你遇到问题的步骤。 - outis
3个回答

2
创建一个HTTP流上下文并将其传递给file_get_contents()函数。之后,您可以:
$metaData = stream_get_meta_data($context);
$headers = $metaData['wrapper_data'];

1
您可以在超级全局变量 $_SERVER 中找到它们... 以 HTTP_ 开头的任何内容都应该是一个标头... 这取决于服务器,这将如何工作... 问候 back2dos。

他正在询问如何在他的脚本作为HTTP客户端时获取头信息。 - outis

0
你是如何发出POST请求的?我使用socket,然后读取响应,在响应中获取头和主体。

我想使用套接字,但我不知道如何编写代码。根据我的C++知识,如果我创建一个套接字,我可以轻松完成这项工作,但是在PHP中该怎么做呢? - Naumaan
2
我从我写的HTTP类中摘取了这段代码,所以所有的细节 - 错误处理等 - 都被省略了,但我认为它展示了基本步骤。$fp = @fsockopen(HttpComm::$host, HttpComm::$port, $iErrno, $sErrStr, (int)self::$iTimeoutConnectionSecs);// 发送请求 fputs($fp, $sHttpString, strlen($sHttpString));// 这将获取头部字符串 $sResponse = stream_get_line($fp, 1024, "\r\n\r\n");// 我会像这样分解HTTP响应头 HttpComm::$headers = explode("\r\n", $sResponse);如果您继续阅读,那么接下来就是响应正文。 - grantwparks
抱歉格式有些混乱。我在常见问题解答中查找了代码格式化。 - grantwparks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接