PHP - 获取原始服务器响应?

时间:2011-10-12 14:41:43

标签: php http-headers gzip

我需要使用标头获取原始服务器响应。这也意味着仍应压缩gzip压缩或缩小内容。我不希望对收到的内容进行任何更改。

PHP可以实现吗?

我尝试使用curl,但这似乎不起作用,我将它们设置为零:

             CURLOPT_HTTP_CONTENT_DECODING => 0, 
             CURLOPT_HTTP_TRANSFER_DECODING => 0,

但没有帮助。

我尝试使用fsockopen,但似乎也会自动解压缩。

还有别的吗?

编辑:这些都是我的卷曲标题:

$options = array(CURLOPT_URL => 'http://www.example.com/', 
             CURLOPT_CONNECTTIMEOUT => 20,
             CURLOPT_HEADER => 1, 
             CURLOPT_RETURNTRANSFER => 1, 
             CURLOPT_FOLLOWLOCATION => 1, 
             CURLOPT_USERAGENT => $user_agent, 
             //CURLOPT_CUSTOMREQUEST => 'HEAD',
             //CURLOPT_NOBODY => true,
             CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                 //CURLOPT_HTTP_CONTENT_DECODING => 0, 
                 //CURLOPT_HTTP_TRANSFER_DECODING => 0,
             CURLOPT_BINARYTRANSFER => 1,
             CURLOPT_HTTPHEADER => array('Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
                                         'Accept-Language' => 'en-us', 
                                         'Accept-Encoding' => 'gzip, deflate'));

感谢。

1 个答案:

答案 0 :(得分:0)

fsockopen不会自动解压缩,但如果您要自己编写HTTP客户端,则必须告诉服务器您已准备好接受gzip压缩响应,其他服务器将向您发送未压缩的响应。

您可以在请求中加入Accept-Encoding标题,例如

Accept-Encoding: compress, gzip