mirror of
https://github.com/moparisthebest/curl
synced 2025-02-28 09:21:50 -05:00
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
|
||||
\fI-F, --form\fP.
|
||||
|
||||
\fI-d, --data\fP is the same as \fI--data-ascii\fP. To 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.
|
||||
\fI-d, --data\fP is the same as \fI--data-ascii\fP. \fI--data-raw\fP is almost
|
||||
the same but does not have a special interpretation of the @ character. To
|
||||
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
|
||||
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
|
||||
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
|
||||
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>"
|
||||
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
|
||||
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>"
|
||||
(HTTP) This posts data, similar to the other --data options with the exception
|
||||
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,
|
||||
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)
|
||||
.IP "--false-start"
|
||||
|
||||
|
@ -196,6 +196,7 @@ static const struct LongShort aliases[]= {
|
||||
{"c", "cookie-jar", TRUE},
|
||||
{"C", "continue-at", TRUE},
|
||||
{"d", "data", TRUE},
|
||||
{"dr", "data-raw", TRUE},
|
||||
{"da", "data-ascii", TRUE},
|
||||
{"db", "data-binary", TRUE},
|
||||
{"de", "data-urlencode", TRUE},
|
||||
@ -1099,6 +1100,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
|
||||
char *postdata = NULL;
|
||||
FILE *file;
|
||||
size_t size = 0;
|
||||
bool raw_mode = (subletter == 'r');
|
||||
|
||||
if(subletter == 'e') { /* --data-urlencode*/
|
||||
/* [name]=[content], we encode the content part only
|
||||
@ -1124,7 +1126,6 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
|
||||
}
|
||||
if('@' == is_file) {
|
||||
/* a '@' letter, it means that a file name or - (stdin) follows */
|
||||
|
||||
if(curlx_strequal("-", p)) {
|
||||
file = stdin;
|
||||
set_binmode(stdin);
|
||||
@ -1185,7 +1186,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
|
||||
return PARAM_NO_MEM;
|
||||
}
|
||||
}
|
||||
else if('@' == *nextarg) {
|
||||
else if('@' == *nextarg && !raw_mode) {
|
||||
/* the data begins with a '@' letter, it means that a file name
|
||||
or - (stdin) follows */
|
||||
nextarg++; /* pass the @ */
|
||||
|
@ -65,6 +65,7 @@ static const char *const helptext[] = {
|
||||
" --crlf Convert LF to CRLF in upload",
|
||||
" --crlfile FILE Get a CRL list in PEM format from the given file",
|
||||
" -d, --data DATA HTTP POST data (H)",
|
||||
" --data-raw DATA HTTP POST data, '@' allowed (H)",
|
||||
" --data-ascii DATA HTTP POST ASCII data (H)",
|
||||
" --data-binary DATA HTTP POST binary data (H)",
|
||||
" --data-urlencode DATA HTTP POST data url encoded (H)",
|
||||
|
Loading…
x
Reference in New Issue
Block a user