如何在cURL POST数据中包含@和&等特殊字符?我尝试传递一个名称和密码,如下所示:
curl -d name=john passwd=@31&3*J https://www.mysite.com
这会导致一些问题,因为@用于加载文件,而&用于指定多个键/值。有什么方法可以转义这些字符吗?\@和\&似乎不起作用。
@
&
\@
\&
gudnpqoy1#
cURL〉7.18.0有一个选项--data-urlencode可以解决这个问题。
--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
vtwuwzda2#
使用实体代码如何...@ = %40& = %26个因此,您会:curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com
@ = %40
& = %26
curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com
8ftvxx2r3#
用双引号(““)将整个URL括起来。它可以工作。
URL
curl "http://www.mysite.com?name=john&passwd=@31&3*J"
8qgya5xd4#
刚刚发现另一个解决方案对我有效。你可以在你的一个特殊之前使用“\”符号。
passwd=\@31\&3*J
6pp0gazn5#
试试看:
export CURLNAME="john:@31&3*J" curl -d -u "${CURLNAME}" https://www.example.com
x4shl7ld6#
如果密码中包含特殊字符,只需将密码用单引号括起来即可。
curl -u username:'this|!Pa&*12' --request POST https://www.example.com
g6baxovj7#
是我干的
~]$ export A=g ~]$ export B=! ~]$ export C=nger curl http://<>USERNAME<>1:$A$B$C@<>URL<>/<>PATH<>/
7条答案
按热度按时间gudnpqoy1#
cURL〉7.18.0有一个选项
--data-urlencode
可以解决这个问题。总结注解,在混合“好”和“坏”数据和感叹号的情况下,我们可以在Windows上使用:
vtwuwzda2#
使用实体代码如何...
@ = %40
& = %26
个因此,您会:
curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com
8ftvxx2r3#
用双引号(““)将整个
URL
括起来。它可以工作。8qgya5xd4#
刚刚发现另一个解决方案对我有效。你可以在你的一个特殊之前使用“\”符号。
6pp0gazn5#
试试看:
x4shl7ld6#
如果密码中包含特殊字符,只需将密码用单引号括起来即可。
g6baxovj7#
是我干的