我需要使用标头获取原始服务器响应。这也意味着仍应压缩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'));
感谢。
答案 0 :(得分:0)
fsockopen不会自动解压缩,但如果您要自己编写HTTP客户端,则必须告诉服务器您已准备好接受gzip压缩响应,其他服务器将向您发送未压缩的响应。
您可以在请求中加入Accept-Encoding标题,例如
Accept-Encoding: compress, gzip