gpt4 book ai didi

php - 有没有办法将 --compressed 传递给 PHP 的 curl_setopt()?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:41 27 4
gpt4 key购买 nike

使用 curl 时,我发现我所访问的服务器的行为有所不同,这取决于我是否将 --compressed 作为参数传递。

我已经将 Accept-Encoding header 设置为 gzip、deflate、sdch:

    curl_setopt( $ch, CURLOPT_ENCODING, 'gzip,deflate,sdch' );

我还尝试将编码设置为空字符串:'' 因为这应该意味着支持任何类型的压缩。

但是,如果我通过命令行传递 --compressed,我得到的内容类型是:gzip。如果我不传入--compressed,我得到的内容类型是text/html;charset=UTF-8

使用 PHP 的 curl_exec(),我似乎永远无法让它返回内容类型:gzip。

=====

让我澄清一下我要完成的任务。当我运行以下命令时:curl -I http://someserver.com --compressed 获取内容类型:gzip

运行相同的命令 curl -I http://someserver.com 没有 --compressed 让我内容类型:text/html;charset=UTF-8

尝试在 PHP 中执行此操作:

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "http://someserver.com" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );

// I've tried excluding this line, setting it to gzip, and empty string
curl_setopt( $ch, CURLOPT_ENCODING, '' );
curl_setopt( $ch, CURLOPT_HEADER, 1);

curl_exec( $ch ) );
$content_type = curl_getinfo( $ch, CURLINFO_CONTENT_TYPE );

无论我尝试什么,我得到的都是 $content-type = text/html;charset=UTF-8 而不是 gzip

最佳答案

删除 CURLOPT_ENCODING 选项(这样 curl 不会自动解码)并手动将 accept-encoding 选项放在 header 中应该可以解决问题:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding: gzip, deflate',
'Connection: Close'
));

关于php - 有没有办法将 --compressed 传递给 PHP 的 curl_setopt()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22145830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com