302重定向不当行为

时间:2012-12-12 15:22:32

标签: http libcurl

我正在使用相当陈旧的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();
}

1 个答案:

答案 0 :(得分:0)

libcurl将始终使用CURLOPT_URL请求您在句柄中设置的URL。如果您不更新URL,它将在重新使用句柄的所有后续请求中请求该URL。

传输遵循位置的事实:在先前的请求中设置CURLOPT_FOLLOWLOCATION不会影响它在后续请求中请求的URL。

你应该知道,当你使用这样一个旧的libcurl版本时,它不会从你的代码中复制URL字符串,而是指向它,所以如果你在平均时间内更改字符串它会改变有点像libcurl所知道的“幕后”。