rsk*_*k82 2 php curl libcurl http-headers
首先我初始化curl句柄:
$ch = curl_init();
Run Code Online (Sandbox Code Playgroud)
接下来,我设置url和referer标头:
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_REFERER,$referer);
Run Code Online (Sandbox Code Playgroud)
最后执行声明:
curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)
现在我可以使用另一个url而无需关闭并重新打开句柄,因此:
curl_setopt($ch,CURLOPT_URL,$another_url);
Run Code Online (Sandbox Code Playgroud)
在这里头痛开始,因为我不知道如何禁用将发送服务器的referer标头,当然我已经尝试放入false和null进入CURLOPT_REFERER但它导致referer字段为空,这Referer:仍然是发送到服务器,但没有任何价值(使用http规范,这是否正确?).
是否有任何选项可以完全删除标题而不关闭和重新实例化curl句柄?
我想避免它,因为curl保持连接打开一段时间,如果我从同一主机下载时不断关闭句柄可能需要更多时间.
您可以完全删除referer字段或通常由curl处理的任何其他字段,方法是在":"之后将其无任何内容传递给CURLOPT_HTTPHEADER:
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Referer:"));
Run Code Online (Sandbox Code Playgroud)
并且它不会出现在标题中.
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTHTTPHEADER