Provided by: libcurl4-doc_7.81.0-1ubuntu1.19_all bug

NAME

       CURLOPT_FOLLOWLOCATION - follow HTTP 3xx redirects

SYNOPSIS

       #include <curl/curl.h>

       CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);

DESCRIPTION

       A long parameter set to 1 tells the library to follow any Location: header that the server
       sends as part of an HTTP header in a 3xx response. The  Location:  header  can  specify  a
       relative or an absolute URL to follow.

       libcurl  will  issue  another request for the new URL and follow new Location: headers all
       the way until no more such headers are returned.   CURLOPT_MAXREDIRS(3)  can  be  used  to
       limit the number of redirects libcurl will follow.

       libcurl  limits what protocols it automatically follows to. The accepted protocols are set
       with CURLOPT_REDIR_PROTOCOLS(3). By default libcurl will allow HTTP, HTTPS, FTP  and  FTPS
       on  redirect  (7.65.2). Older versions of libcurl allowed all protocols on redirect except
       those disabled for security reasons: Since 7.19.4 FILE and SCP  are  disabled,  and  since
       7.40.0 SMB and SMBS are also disabled.

       When  following  a Location:, the 3xx response code that redirected it also dictates which
       request method it will use in the subsequent request:  For  301,  302  and  303  responses
       libcurl  will switch method from POST to GET unless CURLOPT_POSTREDIR(3) instructs libcurl
       otherwise. All other 3xx codes will make libcurl send the same method again.

       For users who think the existing location following is too naive, too simple or just lacks
       features,  it  is easy to instead implement your own redirect follow logic with the use of
       curl_easy_getinfo(3)'s    CURLINFO_REDIRECT_URL(3)     option     instead     of     using
       CURLOPT_FOLLOWLOCATION(3).

DEFAULT

       0, disabled

PROTOCOLS

       HTTP(S)

EXAMPLE

       CURL *curl = curl_easy_init();
       if(curl) {
         curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");

         /* example.com is redirected, so we tell libcurl to follow redirection */
         curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);

         curl_easy_perform(curl);
       }

AVAILABILITY

       Along with HTTP

RETURN VALUE

       Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.

SEE ALSO

       CURLOPT_REDIR_PROTOCOLS(3),           CURLOPT_PROTOCOLS(3),          CURLOPT_POSTREDIR(3),
       CURLINFO_REDIRECT_URL(3), CURLINFO_REDIRECT_COUNT(3),