问与答 cURL POST d中的特殊字符,例如@和&

peterson · 2020-03-06 14:25:31 · 热度: 842

如何在cURL POST数据中包含@和&之类的特殊字符? 我正在尝试传递一个名称和密码,例如:

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

这将导致问题,因为@用于加载文件,&用于指定多个键/值。 有什么办法可以逃脱这些角色? \@\&似乎不起作用。

猜你喜欢:
共收到 6 条回复
merle #1 · 2020-03-06 14:25:32

cURL> 7.18.0具有选项--data-urlencode,它可以解决此问题。 使用这个,我可以简单地发送一个POST请求作为

curl -d name=john --data-urlencode passwd=@31&3*J https://www.mysite.com
glen #2 · 2020-03-06 14:25:33

如何使用实体代码...

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

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

因此,您将拥有:

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

trevon #3 · 2020-03-06 14:25:35

将整个URL都用双引号(“”)起作用。

curl "http://www.mysite.com?name=john&passwd=@31&3*J"
darrin #4 · 2020-03-06 14:25:36

刚刚发现另一种解决方案对我有用。 您可以在特殊字符前使用'\'号。

passwd=\@31\&3*J
hobart #5 · 2020-03-06 14:25:37

尝试这个:

export CURLNAME="john:@31&3*J"
curl -d -u "${CURLNAME}" https://www.example.com
johnny #6 · 2020-03-06 14:25:39

我做了这个

~]$ export A=g

~]$ export B=!

~]$ export C=nger


   curl http://<>USERNAME<>1:$A$B$C@<>URL<>/<>PATH<>/
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册