与浏览器使用CURL和PHP发出请求时完全一样,当以Curl(cmd)复制时,我看到此标头:
curl "https://www.w3schools.com/js/ajax_info.txt"
-H "Sec-Fetch-Mode: cors"
-H "referer: https://www.w3schools.com/js/tryit.asp?filename=tryjs_ajax_first"
-H "Origin: https://www.w3schools.com"
-H "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
-H "dnt: 1"
--compressed
我有一些代码,但是我需要更多选择,例如“ --compressed”部分,我不知道如何应要求包含它
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, 'https://www.w3schools.com/js/ajax_info.txt');
$data = curl_exec($ch);
curl_close($ch);
return $data;
?>
我看不到结果,因为是标题
您设置了CURLOPT_ENCODING
选项并要求使用特定的编码(压缩方法),或者让curl本身请求其知道的编码。除非您有特殊知识,否则让curl询问其支持什么通常会获得最佳效果。
curl_setopt($ch, CURLOPT_ENCODING, '');
请注意,注释中提到的纯净curl-to-php service对此有效,但将生成具有一组固定方法的非最佳版本。我已经为此提交了单独的bug report。
此选项在底层libcurl中称为CURLOPT_ACCEPT_ENCODING,因为它在多年前已被重命名。