我有这样的网址:X.XXX.XXX.XXX:10080
我试图在此URL中添加用户和密码,例如:http://OLM:OLM794$@X.XXX.XXX.XXX:10080
用户 = OLM
Psw = OLM794$
它不起作用
另外,当我运行:curl http://OLM:OLM794$@X.XXX.XXX.XXX:10080
时,它也会显示我:
curl: (6) Could not resolve host:OLM:OLM794X.XXX.XXX.XXX
,它将删除$@
和端口:10080
当我尝试:curl -u OLM X.XXX.XXX.XXX:10080
时,我输入了密码,它可以正常工作,无法连接到该服务器。
我需要使用以下用户名和密码来调用我的网址:
http://OLM:OLM794$@X.XXX.XXX.XXX:10080
但这不起作用。
我阅读了以下解决方案:Using cURL with a username and password?,但没有找到解决方法
您知道为什么吗?
答案 0 :(得分:1)
似乎curl
解析并重构了URL,而忽略了它认为是非法的字符。对我来说,相同的命令会给出不同的错误。.可能是您的curl版本与我的curl版本不同。
$ curl -v http://OLM:OLM794$@127.0.0.1:10000
* Rebuilt URL to: http://OLM:OLM794127.0.0.1:10000/
* Port number ended with 'O'
* Closing connection -1
curl: (3) Port number ended with 'O'
解决方案非常简单,只需对$
符号进行网址转义:%24
:
$ curl http://OLM:OLM794%24@127.0.0.1:10000
根据RFC1738,美元符号被允许作为未保留的字符使用,可以直接使用,但是此旧RFC已被多次更新。例如,RFC3986不再将其称为未保留字符。这意味着$
符号具有特殊含义,应在不提供给定功能的任何URL中进行编码。