1

私はかなり古い libCurl 7.15.1 を使用しています。リクエストを取得すると、サーバーはロケーションヘッダーにリダイレクトされた URL で期待どおりに 302 を返します。しかし、再度 get リクエストを行うと、実際の URL ではなく、リダイレクトされた URL に直接移動します。これは、実際には 301 premanent リダイレクトのように動作します。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 に答える