【问题标题】:cURL gets 401.2 error with httpscURL 使用 https 时出现 401.2 错误
【发布时间】:2014-01-03 16:10:02
【问题描述】:

我尝试了在这里找到的所有东西,但没有任何帮助。 我正在尝试通过 HTTPS 连接到 IIS6.0 *.svc 文件。这是我的代码:

$ch = curl_init();
$curl_options = array(
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_TIMEOUT => 6,
    CURLOPT_URL => $url
);

if(isset($options['login'])){
    $options[CURLOPT_HTTPAUTH] = CURLAUTH_NTLM;
    $options[CURLOPT_UNRESTRICTED_AUTH] = true;
    $options[CURLOPT_USERPWD] = $login;
}

if(isset($options['params'])){
    array_walk($options['params'], 'curl_escape', $ch);
    $curl_options[CURLOPT_POST] = true;
    $curl_options[CURLOPT_POSTFIELDS] = $options['params'];
}

curl_setopt_array($ch, $curl_options);
$content = curl_exec($ch);
curl_close($ch);

我唯一得到的是 401.2 错误,说服务器不喜欢我的身份验证方法。 我也试过$options[CURLOPT_HTTPAUTH] = CURLAUTH_ANY;,但也没有用。

凭据格式正确,user:pw 是 100% 正确的。 问题是:使用浏览器访问页面没有问题,并且给了我正确的 xml 输出。

有什么想法吗?

【问题讨论】:

    标签: php curl https iis-6 ntlm


    【解决方案1】:
    1. 为 https 试试这些:

      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);

    2. 使用 CURLOPT_USERPWD 时,请确保您的 $login 具有用户名:密码格式的值。

    3. 使用 CURLAUTH_BASIC 代替 CURLAUTH_NTLM

    【讨论】:

    • $login 格式正确,需要设置 NTLM,因为我知道这是方法,服务器使用我明天尝试第一个,不过
    • 好的,什么都试过了,没用 :-/ 不过还是谢谢 :) 还有其他人吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2017-02-13
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    相关资源
    最近更新 更多