【问题标题】:PHP - Get Raw Server Response?PHP - 获取原始服务器响应?
【发布时间】:2011-10-12 14:41:43
【问题描述】:

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

这可以用 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'));

谢谢。

【问题讨论】:

    标签: php http-headers gzip


    【解决方案1】:

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

    您可以通过在请求中包含 Accept-Encoding 标头来做到这一点,例如

    Accept-Encoding: compress, gzip
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多