Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

curlopt_followlocation(3) [mojave man page]

CURLOPT_FOLLOWLOCATION(3)				     curl_easy_setopt options					 CURLOPT_FOLLOWLOCATION(3)

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 a 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 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 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 very 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_FOLLOWLOCA- TION(3). DEFAULT
0, disabled PROTOCOLS
HTTP(S) EXAMPLE
CURL *curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://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), libcurl 7.54.0 February 03, 2016 CURLOPT_FOLLOWLOCATION(3)

Check Out this Related Man Page

CURLOPT_SUPPRESS_CONNECT_HEADERS(3)			     curl_easy_setopt options			       CURLOPT_SUPPRESS_CONNECT_HEADERS(3)

NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS - Suppress proxy CONNECT response headers from user callbacks SYNOPSIS
#include <curl/curl.h> CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SUPPRESS_CONNECT_HEADERS, long onoff); DESCRIPTION
When CURLOPT_HTTPPROXYTUNNEL(3) is used and a CONNECT request is made, suppress proxy CONNECT response headers from the user callback func- tions CURLOPT_HEADERFUNCTION(3) and CURLOPT_WRITEFUNCTION(3). Proxy CONNECT response headers can complicate header processing since it's essentially a separate set of headers. You can enable this option to suppress those headers. For example let's assume an HTTPS URL is to be retrieved via CONNECT. On success there would normally be two sets of headers, and each header line sent to the header function and/or the write function. The data given to the callbacks would look like this: HTTP/1.1 200 Connection established {headers}... HTTP/1.1 200 OK Content-Type: application/json {headers}... {body}... However by enabling this option the CONNECT response headers are suppressed, so the data given to the callbacks would look like this: HTTP/1.1 200 OK Content-Type: application/json {headers}... {body}... DEFAULT
0 PROTOCOLS
All EXAMPLE
CURL *curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); curl_easy_setopt(curl, CURLOPT_HEADER, 1L); curl_easy_setopt(curl, CURLOPT_PROXY, "http://foo:3128"); curl_easy_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L); curl_easy_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS, 1L); curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); } AVAILABILITY
Added in 7.54.0 RETURN VALUE
CURLE_OK or an error such as CURLE_UNKNOWN_OPTION. SEE ALSO
CURLOPT_HEADER(3), CURLOPT_PROXY(3), CURLOPT_HTTPPROXYTUNNEL(3), libcurl 7.54.0 April 28, 2016 CURLOPT_SUPPRESS_CONNECT_HEADERS(3)
Man Page