1CURLOPT_POSTREDIR(3)       curl_easy_setopt options       CURLOPT_POSTREDIR(3)
2
3
4

NAME

6       CURLOPT_POSTREDIR - how to act on an HTTP POST redirect
7

SYNOPSIS

9       #include <curl/curl.h>
10
11       CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
12                                 long bitmask);
13

DESCRIPTION

15       Pass  a  bitmask  to  control how libcurl acts on redirects after POSTs
16       that get a 301, 302 or 303 response back.  A parameter with bit  0  set
17       (value CURL_REDIR_POST_301) tells the library to respect RFC 7231 (sec‐
18       tion 6.4.2 to 6.4.4) and not convert POST requests  into  GET  requests
19       when   following   a   301   redirection.    Setting   bit   1   (value
20       CURL_REDIR_POST_302) makes libcurl maintain the request method after  a
21       302  redirect  whilst  setting  bit 2 (value CURL_REDIR_POST_303) makes
22       libcurl maintain the request method after a  303  redirect.  The  value
23       CURL_REDIR_POST_ALL is a convenience define that sets all three bits.
24
25       The non-RFC behavior is ubiquitous in web browsers, so the library does
26       the conversion by default to maintain consistency.  However,  a  server
27       may  require a POST to remain a POST after such a redirection. This op‐
28       tion is meaningful only when setting CURLOPT_FOLLOWLOCATION(3).
29

DEFAULT

31       0
32

PROTOCOLS

34       HTTP(S)
35

EXAMPLE

37       CURL *curl = curl_easy_init();
38       if(curl) {
39         curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
40
41         /* a silly POST example */
42         curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true");
43
44         /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
45            303 HTTP response codes */
46         curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
47
48         curl_easy_perform(curl);
49       }
50

AVAILABILITY

52       Added in 7.17.1. This option was known as CURLOPT_POST301 up to  7.19.0
53       as  it  only  supported  the 301 then. CURL_REDIR_POST_303 was added in
54       7.26.0.
55

RETURN VALUE

57       Returns CURLE_OK if the option is supported,  and  CURLE_UNKNOWN_OPTION
58       if not.
59

SEE ALSO

61       CURLOPT_FOLLOWLOCATION(3), CURLOPT_POSTFIELDS(3),
62
63
64
65libcurl 8.0.1                  January 02, 2023           CURLOPT_POSTREDIR(3)
Impressum