我正在使用相当陈旧的libCurl 7.15.1。 当我获得Request时,服务器按预期返回302,并在location头中重定向url。但是当我再次获取请求时,它会直接转到重定向的URL,而不是实际的URL。这实际上表现得像301 premanent redirect。 我使用followLocation选项,其值为TRUE,MAXREDIRS设置为5。
我在这里错过了什么吗?
CURL* handle;
char* url = "www.google.com";
initialize()
{
curl_easy_setopt(handle, CURLOPT_URL, url);
}
perform()
{
curl_easy_perform(handle);
}
main()
{
CURL* handle = curl_easy_init();
initialize();
perform();
//Do something for some time (delay)
perform();
}
答案 0 :(得分:0)
libcurl将始终使用CURLOPT_URL请求您在句柄中设置的URL。如果您不更新URL,它将在重新使用句柄的所有后续请求中请求该URL。
传输遵循位置的事实:在先前的请求中设置CURLOPT_FOLLOWLOCATION不会影响它在后续请求中请求的URL。
你应该知道,当你使用这样一个旧的libcurl版本时,它不会从你的代码中复制URL字符串,而是指向它,所以如果你在平均时间内更改字符串它会改变有点像libcurl所知道的“幕后”。