我正在尝试使用以下卷曲
curl -k 'https://myhost.com:9091/nifi-api/access/token' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data "username=$USERNAME&password=$PASSWORD" --compressed —insecure
但是在输入密码%
时出现错误
URLDecoder: Incomplete trailing escape (%) pattern
我在网上看到了使用--data-urlencode
的建议,但是随后出现以下错误。
The username and password must be specified.
如何解决此问题?
答案 0 :(得分:0)
--data-urlencode
是多次添加它的方法,每个参数添加一次
userh='vf&re'
passwordh='asdaf%'
curl 'http://127.0.0.1:8080/' --data-urlencode "username=$userh" --data-urlencode "password=$passwordh"
让我们启动netcat
侦听器以检查发送了什么
netcat -l 8080
收到的数据:
POST / HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: curl/7.60.0
Accept: */*
Content-Length: 34
Content-Type: application/x-www-form-urlencoded
username=vf%26re&password=asdaf%25
在一个选项中发送所有参数将不起作用,因为密码参数丢失会触发服务器错误“必须指定用户名和密码。”
curl 'http://127.0.0.1:8080/' --data-urlencode "username=$userh&password=$passwordh"
响应:
POST / HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: curl/7.60.0
Accept: */*
Content-Length: 38
Content-Type: application/x-www-form-urlencoded
username=vf%26re%26password%3Dasdaf%25
来自OP的带有--data
的第一个命令也将不起作用,因为它会发送%
符号,就像触发服务器错误那样,“看到”且编码请求的百分比不完整。
POST / HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: curl/7.60.0
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 33
username=asdasdas&password=asdaf%
基于this answer。