在URL中传递用户名和密码不起作用

时间:2018-11-02 09:16:10

标签: html http curl login server

我有这样的网址: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?,但没有找到解决方法

您知道为什么吗?

1 个答案:

答案 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中进行编码。