1

我正在使用很旧的 libCurl 7.15.1。当我收到请求时,服务器按预期返回 302,并在位置标头中包含重定向的 url。但是当我再次发出 get 请求时,它会直接转到重定向的 url,而不是实际的 URL。这实际上表现得像 301 永久重定向。我使用 TRUE 值和 MAXREDIRS 设置为 5 的 followLocation 选项。

我在这里错过了什么吗?

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();
}
4

1 回答 1

0

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

传输遵循 Location: 在前一个请求中设置 CURLOPT_FOLLOWLOCATION 的事实不会影响它将在后续请求中请求哪个 URL。

您可能应该知道,当您使用这样一个旧的 libcurl 版本时,它不会从您的代码中复制 URL 字符串,而是会指向它,因此如果您同时更改字符串,它会改变“ libcurl 所知道的“幕后”。

于 2012-12-13T10:35:03.333 回答