cURL POST数据中的@和&等特殊字符

moiiocjp  于 2022-11-13  发布在  其他
关注(0)|答案(7)|浏览(456)

如何在cURL POST数据中包含@和&等特殊字符?我尝试传递一个名称和密码,如下所示:

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

这会导致一些问题,因为@用于加载文件,而&用于指定多个键/值。有什么方法可以转义这些字符吗?\@\&似乎不起作用。

gudnpqoy

gudnpqoy1#

cURL〉7.18.0有一个选项--data-urlencode可以解决这个问题。

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
vtwuwzda

vtwuwzda2#

使用实体代码如何...
@ = %40
& = %26
因此,您会:
curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com

8ftvxx2r

8ftvxx2r3#

用双引号(““)将整个URL括起来。它可以工作。

curl "http://www.mysite.com?name=john&passwd=@31&3*J"
8qgya5xd

8qgya5xd4#

刚刚发现另一个解决方案对我有效。你可以在你的一个特殊之前使用“\”符号。

passwd=\@31\&3*J
6pp0gazn

6pp0gazn5#

试试看:

export CURLNAME="john:@31&3*J"
curl -d -u "${CURLNAME}" https://www.example.com
x4shl7ld

x4shl7ld6#

如果密码中包含特殊字符,只需将密码用单引号括起来即可。

curl -u username:'this|!Pa&*12' --request POST https://www.example.com
g6baxovj

g6baxovj7#

是我干的

~]$ export A=g

~]$ export B=!

~]$ export C=nger

   curl http://<>USERNAME<>1:$A$B$C@<>URL<>/<>PATH<>/

相关问题