74

@や&などの特殊文字をcURL POSTデータに含めるにはどうすればよいですか?私は次のような名前とパスワードを渡そうとしています:

curl -d name=john passwd=@31&3*J https://www.mysite.com

@これは、ファイルのロードや&複数のキー/値の指定に使用される問題を引き起こします。これらのキャラクターをエスケープする方法はありますか?うまくいかないようです\@\&

4

8 に答える 8

82

--data-urlencodecURL> 7.18.0には、この問題を解決するオプションがあります。これを使用して、POSTリクエストを次のように送信できます

curl -d name=john --data-urlencode passwd=@31&3*J https://www.example.com

コメントを要約すると、「良い」データと「悪い」データが混在している場合や、Windowsで使用できる感嘆符があります。

curl -d "grant_type=client_credentials&client_id=super-client&acr_values=tenant:TNT123" --data-urlencode "client_secret=XxYyZ21D8E&%fhB6kq^mXQDovSZ%Q*!ipINme"  https://login.example.com/connect/token
于 2012-04-23T11:07:41.680 に答える
42

エンティティコードを使用するのはどうですか...

@ = %40

& = %26

だから、あなたは持っているでしょう:

curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com

于 2012-04-08T03:17:54.403 に答える
16

全体を二重引用符で囲みます( "")URL。動作します。

curl "http://www.mysite.com?name=john&passwd=@31&3*J"
于 2014-03-04T10:37:07.850 に答える
11

ちょうど私のために働いた別の解決策を見つけました。スペシャルの前に「\」記号を使用できます。

passwd=\@31\&3*J
于 2017-09-13T13:47:29.630 に答える
5

これを試して:

export CURLNAME="john:@31&3*J"
curl -d -u "${CURLNAME}" https://www.example.com
于 2015-02-17T10:39:33.547 に答える
5

パスワードに特殊文字が含まれている場合は、パスワードを一重引用符で丸めるだけで機能します。

curl -u username:'this|!Pa&*12' --request POST https://www.example.com
于 2021-04-30T00:28:00.887 に答える
0

これは私がしました

~]$ export A=g

~]$ export B=!

~]$ export C=nger


   curl http://<>USERNAME<>1:$A$B$C@<>URL<>/<>PATH<>/
于 2013-11-19T09:36:34.270 に答える
0

ここでは何も私の問題を解決しませんでした。データに「&」があり、どちらもペイロードに有効な文字であり、何もエスケープしようとはしていません。何か案は?

curl --data-urlencode'{"mrn": "23343"、 "hl7_payload": "MSH | ^〜&| EPIC | AHS ||| 20220222113538 | LFESTA01 | ADT ^ A08 | 165616314 | P | 2.5 ||| AL | NE "、" event_type ":" ADT ^ A03 "、" tracking_id ":" 123432342 "}' https://myapi.com

動作しませんでしたが、それでもpython/flaskは404の不正なリクエストを返しました。

于 2022-02-22T16:58:38.843 に答える