--request-target: instead of --strip-path-slash

... and CURLOPT_REQUEST_TARGET instead of CURLOPT_STRIP_PATH_SLASH.

This option instead provides the full "alternative" target to use in the
request, instead of extracting the path from the URL.

Test 1298 and 1299 updated accordingly.

Idea-by: Evert Pot
Suggestion: https://daniel.haxx.se/blog/2017/06/19/options-with-curl/comment-page-1/#comment-18373

Closes #1593
This commit is contained in:
Daniel Stenberg 2017-06-21 23:35:08 +02:00
parent 8de8f4eb7e
commit 9b167fd090
20 changed files with 49 additions and 49 deletions

View file

@ -42,6 +42,6 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cer
tlsauthtype.d tlspassword.d tlsuser.d tlsv1.0.d tlsv1.1.d tlsv1.2.d \
tlsv1.3.d tlsv1.d trace-ascii.d trace.d trace-time.d tr-encoding.d \
unix-socket.d upload-file.d url.d use-ascii.d user-agent.d user.d \
verbose.d version.d write-out.d xattr.d strip-path-slash.d
verbose.d version.d write-out.d xattr.d request-target.d
OTHERPAGES = page-footer page-header

View file

@ -0,0 +1,8 @@
Long: request-target
Help: Specify the target for this request
Protocols: HTTP
---
Tells curl to use an alternative "target" (path) instead of using the path as
provided in the URL. Particularly useful when wanting to issue HTTP requests
without leading slash or other data that doesn't follow the regular URL
pattern, like "OPTIONS *".

View file

@ -1,7 +0,0 @@
Long: strip-path-slash
Help: Strip off the first slash of the path
Protocols: HTTP
---
Tells curl to strip the leading slash from the path when it sends the path to
the server. Useful when wanting to issue HTTP requests without leading slash,
like "OPTIONS *".

View file

@ -303,8 +303,8 @@ Start a new cookie session. See \fICURLOPT_COOKIESESSION(3)\fP
Add or control cookies. See \fICURLOPT_COOKIELIST(3)\fP
.IP CURLOPT_HTTPGET
Do a HTTP GET request. See \fICURLOPT_HTTPGET(3)\fP
.IP CURLOPT_STRIP_PATH_SLASH
Cut off the leading slash from the path. \fICURLOPT_STRIP_PATH_SLASH(3)\fP
.IP CURLOPT_REQUEST_TARGET
Set the request target. \fICURLOPT_REQUEST_TARGET(3)\fP
.IP CURLOPT_HTTP_VERSION
HTTP version to use. \fICURLOPT_HTTP_VERSION(3)\fP
.IP CURLOPT_IGNORE_CONTENT_LENGTH

View file

@ -108,4 +108,4 @@ Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_HTTPHEADER "(3), " CURLOPT_NOBODY "(3), "
.BR CURLOPT_STRIP_PATH_SLASH "(3), "
.BR CURLOPT_REQUEST_TARGET "(3), "

View file

@ -57,4 +57,4 @@ Always
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_HTTPGET "(3), " CURLOPT_POST "(3), "
.BR CURLOPT_STRIP_PATH_SLASH "(3), "
.BR CURLOPT_REQUEST_TARGET "(3), "

View file

@ -20,18 +20,18 @@
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STRIP_PATH_SLASH 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.TH CURLOPT_REQUEST_TARGET 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STRIP_PATH_SLASH \- strip the leading slash from the path
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STRIP_PATH_SLASH, value);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string);
.SH DESCRIPTION
Pass a long set to 1 to tell libcurl to strip out the leading slash from the
path when used on the server.
Pass a char * to string which libcurl uses in the upcoming request instead of
the path as extracted from the URL.
.SH DEFAULT
0 - use the leading slash.
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
@ -42,7 +42,7 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "OPTIONS");
/* issue an OPTIONS * request (no leading slash) */
curl_easy_setopt(curl, CURLOPT_STRIP_PATH_SLASH, 1L);
curl_easy_setopt(curl, CURLOPT_REQUEST_TARGET, "*");
/* Perform the request */
curl_easy_perform(curl);

View file

@ -231,6 +231,7 @@ man_MANS = \
CURLOPT_READFUNCTION.3 \
CURLOPT_REDIR_PROTOCOLS.3 \
CURLOPT_REFERER.3 \
CURLOPT_REQUEST_TARGET.3 \
CURLOPT_RESOLVE.3 \
CURLOPT_RESUME_FROM.3 \
CURLOPT_RESUME_FROM_LARGE.3 \
@ -278,7 +279,6 @@ man_MANS = \
CURLOPT_STREAM_DEPENDS.3 \
CURLOPT_STREAM_DEPENDS_E.3 \
CURLOPT_STREAM_WEIGHT.3 \
CURLOPT_STRIP_PATH_SLASH.3 \
CURLOPT_SUPPRESS_CONNECT_HEADERS.3 \
CURLOPT_TCP_FASTOPEN.3 \
CURLOPT_TCP_KEEPALIVE.3 \

View file

@ -409,7 +409,6 @@ CURLOPT_HTTPPOST 7.1
CURLOPT_HTTPPROXYTUNNEL 7.3
CURLOPT_HTTPREQUEST 7.1 - 7.15.5
CURLOPT_HTTP_CONTENT_DECODING 7.16.2
CURLOPT_STRIP_PATH_SLASH 7.55.0
CURLOPT_HTTP_TRANSFER_DECODING 7.16.2
CURLOPT_HTTP_VERSION 7.9.1
CURLOPT_IGNORE_CONTENT_LENGTH 7.14.1
@ -509,6 +508,7 @@ CURLOPT_READDATA 7.9.7
CURLOPT_READFUNCTION 7.1
CURLOPT_REDIR_PROTOCOLS 7.19.4
CURLOPT_REFERER 7.1
CURLOPT_REQUEST_TARGET 7.55.0
CURLOPT_RESOLVE 7.21.3
CURLOPT_RESUME_FROM 7.1
CURLOPT_RESUME_FROM_LARGE 7.11.0