设置CURLOPT_USERPWD时,用户名或传递冒号的问题

jam*_*nto 7 php curl

我们正在尝试使用PHP5中的curl使用基本身份验证登录网站.

部分代码是这样的:

<?
...
$uname = "username";
$pass = "p:assword";

curl_setopt($ch,CURLOPT_USERPWD,"$uname:$pass"); 
...
?>
Run Code Online (Sandbox Code Playgroud)

但似乎我们的密码中的冒号导致了麻烦.

我们无法更改生产站点的密码,但我们确认该代码在使用字母数字用户名和密码的其他站点上正常工作.

有没有办法逃脱密码中的冒号,所以卷曲仍然有效?我们尝试了"p \:assword"没有运气.

谢谢.

jam*_*nto 6

所以事实证明这不是冒号的问题......这是认证方案的问题.

起初我们使用:

curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
Run Code Online (Sandbox Code Playgroud)

并改为:

curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.

我们对另一台服务器的测试有它的缺点 - 工作的服务器在Windows上运行IIS,我们遇到问题的生产服务器在linux上运行apache.

所以我再说一遍:使用包含冒号的冒号的用户名或密码显然没有问题.这解释了为什么没有这个问题的文档.

抱歉得出结论,谢谢你的帮助.