Http 302.不当行为

Http 302.不当行为,http,libcurl,Http,Libcurl,我正在使用libCurl 7.15.1,它已经很旧了。 当我确实收到请求时,服务器会按预期返回302,并在位置标头中包含重定向的url。但当我再次发出get请求时,它会直接转到重定向的url,而不是实际的url。这实际上表现为301临时重定向。 我使用followLocation选项,将TRUE值和MAXREDIRS设置为5 我是不是遗漏了什么 CURL* handle; char* url = "www.google.com"; initialize() { curl_easy_set

我正在使用libCurl 7.15.1,它已经很旧了。 当我确实收到请求时,服务器会按预期返回302,并在位置标头中包含重定向的url。但当我再次发出get请求时,它会直接转到重定向的url,而不是实际的url。这实际上表现为301临时重定向。 我使用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();
}

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

传输遵循一个位置的事实:在前一个请求中设置了CURLOPT_FOLLOWLOCATION不会影响它将在下一个请求中请求的URL


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

您的问题没有包含足够的细节,我们无法给出好的答案。libcurl中没有你似乎暗示的逻辑。另外,libcurl版本3.15.1从未出现过,您可能指的是7.15.1…嗨,Daniel,当我使用libcurl句柄发送get请求时,服务器发送302个包含重定向URL的找到响应。libcurl再次将get请求发送到te重定向URL,我得到200个OK响应。当我对相同的GET请求再次使用相同的句柄时,libCurl直接转到重定向URL和原始URL。我确保get请求是为原始服务器而不是重定向服务器发送的。很抱歉libCurl版本,我检查了它是7.15.1,我保留了URL字符串,当我重用句柄时,livCurl将引用正确的内存位置。但302响应的行为仍然是错误的。请检查问题描述中的上述代码。第二次执行将指向重定向的URL,即使它收到了第一次执行的302响应。你声称它做的不同。那么它要么是您的旧libcurl版本中的一个bug,要么是您的程序中有一个bug。我受够了!