tool: New option --data-raw to HTTP POST data, '@' allowed.
Add new option --data-raw which is almost the same as --data but does not have a special interpretation of the @ character. Prior to this change there was no (easy) way to pass the @ character as the first character in POST data without it being interpreted as a special character. Bug: https://github.com/bagder/curl/issues/198 Reported-by: Jens Rantil
This commit is contained in:
parent
f1e0a0aae7
commit
6a7261359b
16
docs/curl.1
16
docs/curl.1
@ -315,9 +315,10 @@ presses the submit button. This will cause curl to pass the data to the server
|
|||||||
using the content-type application/x-www-form-urlencoded. Compare to
|
using the content-type application/x-www-form-urlencoded. Compare to
|
||||||
\fI-F, --form\fP.
|
\fI-F, --form\fP.
|
||||||
|
|
||||||
\fI-d, --data\fP is the same as \fI--data-ascii\fP. To post data purely binary,
|
\fI-d, --data\fP is the same as \fI--data-ascii\fP. \fI--data-raw\fP is almost
|
||||||
you should instead use the \fI--data-binary\fP option. To URL-encode the value
|
the same but does not have a special interpretation of the @ character. To
|
||||||
of a form field you may use \fI--data-urlencode\fP.
|
post data purely binary, you should instead use the\fI--data-binary\fP option.
|
||||||
|
To URL-encode the value of a form field you may use \fI--data-urlencode\fP.
|
||||||
|
|
||||||
If any of these options is used more than once on the same command line, the
|
If any of these options is used more than once on the same command line, the
|
||||||
data pieces specified will be merged together with a separating
|
data pieces specified will be merged together with a separating
|
||||||
@ -329,7 +330,8 @@ read the data from, or - if you want curl to read the data from
|
|||||||
stdin. Multiple files can also be specified. Posting data from a file
|
stdin. Multiple files can also be specified. Posting data from a file
|
||||||
named 'foobar' would thus be done with \fI--data\fP @foobar. When --data is
|
named 'foobar' would thus be done with \fI--data\fP @foobar. When --data is
|
||||||
told to read from a file like that, carriage returns and newlines will be
|
told to read from a file like that, carriage returns and newlines will be
|
||||||
stripped out.
|
stripped out. If you don't want the @ character to have a special
|
||||||
|
interpretation use \fI--data-raw\fP instead.
|
||||||
.IP "-D, --dump-header <file>"
|
.IP "-D, --dump-header <file>"
|
||||||
Write the protocol headers to the specified file.
|
Write the protocol headers to the specified file.
|
||||||
|
|
||||||
@ -354,6 +356,10 @@ and carriage returns are preserved and conversions are never done.
|
|||||||
|
|
||||||
If this option is used several times, the ones following the first will append
|
If this option is used several times, the ones following the first will append
|
||||||
data as described in \fI-d, --data\fP.
|
data as described in \fI-d, --data\fP.
|
||||||
|
.IP "--data-raw <data>"
|
||||||
|
(HTTP) This posts data similarly to \fI--data\fP but without the special
|
||||||
|
interpretation of the @ character. See \fI-d, --data\fP.
|
||||||
|
(Added in 7.43.0)
|
||||||
.IP "--data-urlencode <data>"
|
.IP "--data-urlencode <data>"
|
||||||
(HTTP) This posts data, similar to the other --data options with the exception
|
(HTTP) This posts data, similar to the other --data options with the exception
|
||||||
that this performs URL-encoding. (Added in 7.18.0)
|
that this performs URL-encoding. (Added in 7.18.0)
|
||||||
@ -560,7 +566,7 @@ If this option is enabled and the server sends an invalid (e.g. expired)
|
|||||||
response, if the response suggests that the server certificate has been revoked,
|
response, if the response suggests that the server certificate has been revoked,
|
||||||
or no response at all is received, the verification fails.
|
or no response at all is received, the verification fails.
|
||||||
|
|
||||||
This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
|
This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
|
||||||
(Added in 7.41.0)
|
(Added in 7.41.0)
|
||||||
.IP "--false-start"
|
.IP "--false-start"
|
||||||
|
|
||||||
|
@ -196,6 +196,7 @@ static const struct LongShort aliases[]= {
|
|||||||
{"c", "cookie-jar", TRUE},
|
{"c", "cookie-jar", TRUE},
|
||||||
{"C", "continue-at", TRUE},
|
{"C", "continue-at", TRUE},
|
||||||
{"d", "data", TRUE},
|
{"d", "data", TRUE},
|
||||||
|
{"dr", "data-raw", TRUE},
|
||||||
{"da", "data-ascii", TRUE},
|
{"da", "data-ascii", TRUE},
|
||||||
{"db", "data-binary", TRUE},
|
{"db", "data-binary", TRUE},
|
||||||
{"de", "data-urlencode", TRUE},
|
{"de", "data-urlencode", TRUE},
|
||||||
@ -1099,6 +1100,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
|
|||||||
char *postdata = NULL;
|
char *postdata = NULL;
|
||||||
FILE *file;
|
FILE *file;
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
|
bool raw_mode = (subletter == 'r');
|
||||||
|
|
||||||
if(subletter == 'e') { /* --data-urlencode*/
|
if(subletter == 'e') { /* --data-urlencode*/
|
||||||
/* [name]=[content], we encode the content part only
|
/* [name]=[content], we encode the content part only
|
||||||
@ -1124,7 +1126,6 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
|
|||||||
}
|
}
|
||||||
if('@' == is_file) {
|
if('@' == is_file) {
|
||||||
/* a '@' letter, it means that a file name or - (stdin) follows */
|
/* a '@' letter, it means that a file name or - (stdin) follows */
|
||||||
|
|
||||||
if(curlx_strequal("-", p)) {
|
if(curlx_strequal("-", p)) {
|
||||||
file = stdin;
|
file = stdin;
|
||||||
set_binmode(stdin);
|
set_binmode(stdin);
|
||||||
@ -1185,7 +1186,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
|
|||||||
return PARAM_NO_MEM;
|
return PARAM_NO_MEM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if('@' == *nextarg) {
|
else if('@' == *nextarg && !raw_mode) {
|
||||||
/* the data begins with a '@' letter, it means that a file name
|
/* the data begins with a '@' letter, it means that a file name
|
||||||
or - (stdin) follows */
|
or - (stdin) follows */
|
||||||
nextarg++; /* pass the @ */
|
nextarg++; /* pass the @ */
|
||||||
|
@ -65,6 +65,7 @@ static const char *const helptext[] = {
|
|||||||
" --crlf Convert LF to CRLF in upload",
|
" --crlf Convert LF to CRLF in upload",
|
||||||
" --crlfile FILE Get a CRL list in PEM format from the given file",
|
" --crlfile FILE Get a CRL list in PEM format from the given file",
|
||||||
" -d, --data DATA HTTP POST data (H)",
|
" -d, --data DATA HTTP POST data (H)",
|
||||||
|
" --data-raw DATA HTTP POST data, '@' allowed (H)",
|
||||||
" --data-ascii DATA HTTP POST ASCII data (H)",
|
" --data-ascii DATA HTTP POST ASCII data (H)",
|
||||||
" --data-binary DATA HTTP POST binary data (H)",
|
" --data-binary DATA HTTP POST binary data (H)",
|
||||||
" --data-urlencode DATA HTTP POST data url encoded (H)",
|
" --data-urlencode DATA HTTP POST data url encoded (H)",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user