我试图通过一些基本的身份验证(通过发送加密的头)来发出CURL请求.但是,当我尝试设置“Host:_”标头时,远程服务器响应:
Bad Request: Your browser sent a request that this server Could not understand.
这是进行CURL调用的代码.请注意,只要我在$http_header变量中注释掉“Host:url”标头,它就会起作用.但是,它在目标服务器上用作身份验证过程的一部分,因此我不能简单地将其删除.
$curl = curl_init();
$opt = array(
CURLOPT_URL=>$url,
CURLOPT_RETURNTRANSFER=>1,
CURLOPT_HTTPHEADER=>$http_header,
CURLOPT_POST=>1,
CURLOPT_POSTFIELDS=>$data_params,
CURLOPT_CONNECTTIMEOUT=>5, // Timeout to 5 seconds
);
curl_setopt_array($curl, $opt);
// $output contains the output string
$output = curl_exec($curl);
// it closes the session
curl_close($curl);
array
0 => string 'Host: http://localhost/work/myproject'
1 => string 'Content-Type: multipart/form-data'
2 => string 'X-Authorization: Basicauth Z2xZjA2YzJhMzIxYTI1ZmIzZTgxYQ=='
解决方法:
Host标头不接受完整的URL,只接受主机名.
"Host: $url"
有:
"Host: ". parse_url($url, PHP_URL_HOST) ."
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。