PHP设置以':'开头的自定义标头

时间:2020-10-25 11:10:31

标签: php curl http-headers request-headers

我需要设置一些以“:”开头的自定义标头。

$option['headers'][] = ":authority: example.com"; //<-- Here is the problem
$option['headers'][] = "accept-encoding: gzip, deflate, br";
$option['post'] = json_encode(array("Domain"=>"example.com"));
$url = "https://www.google.com";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36");
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_COOKIEFILE,"file.cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"file.cookie");
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_VERBOSE, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $option['post']);
curl_setopt($ch, CURLOPT_HTTPHEADER, $option['headers']);
$getdata = curl_exec($ch);

我尝试用chr(58)替换“:”,但存在相同的问题。我收到错误55,并从日志“ *无法发送HTTP POST请求”中获取错误。如果我评论第一行正在工作,但我确实需要该标头。我被困在这里。有解决方案吗?

1 个答案:

答案 0 :(得分:1)

:authority:看起来像HTTP / 2伪标题,您不能使用curl设置它们。但是curl将自己传递它,并且它将使用与为Host:设置的内容相同的内容,以使其以相同的方式工作,而与最终使用的HTTP版本无关(它也将与HTTP / 3一起使用) )。