1. ホーム
  2. post

[解決済み] cURLのPOSTデータに含まれる@や&などの特殊文字について

2022-02-12 20:23:51

質問事項

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

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

この場合、以下のような問題が発生します。 @ はファイルの読み込みに使用され & 複数のキー/バリューを指定する場合。これらの文字をエスケープする方法はありますか? \@\& は動作しないようです。

解決方法は?

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

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

コメントをまとめると、"good" と "bad" のデータが混在している場合、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