如何从curl句柄中删除以前设置的请求标头referer字段?

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标头,当然我已经尝试放入falsenull进入CURLOPT_REFERER但它导致referer字段为空,这Referer:仍然是发送到服务器,但没有任何价值(使用http规范,这是否正确?).

是否有任何选项可以完全删除标题而不关闭和重新实例化curl句柄?

我想避免它,因为curl保持连接打开一段时间,如果我从同一主机下载时不断关闭句柄可能需要更多时间.

ale*_*sdm 6

您可以完全删除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