PHP cURL SSL中的基本授权

时间:2013-11-16 19:12:32

标签: php curl ssl

我正在尝试使用cURL获取SSL ASPX页面的内容,这是我的代码:

$ourFileName = "cookieFIle.txt";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fclose($ourFileHandle);

function curl_get($url) {
    $ch = curl_init();
    $options = array(
        CURLOPT_HEADER => 1,
        CURLOPT_URL => $url,
        CURLOPT_USERPWD => 'XXX:XXX',
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_HTTPAUTH => CURLAUTH_ANY,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13',
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_COOKIESESSION, true,
        CURLOPT_COOKIEFILE, "cookieFIle.txt",
        CURLOPT_COOKIEJAR, "cookieFIle.txt"
    );
    curl_setopt_array($ch, $options);
    $return = curl_exec($ch);
    curl_close($ch);

    return $return;
}


echo curl_get('https://somepage.com/intranet/loginprocess.aspx');

每当我执行代码时,我都会收到:

部首:

HTTP/1.1 401 Unauthorized
Content-Length: 1656
Content-Type: text/html
Server: Microsoft-IIS/6.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
X-UA-Compatible: IE=EmulateIE8
Date: Sat, 16 Nov 2013 19:05:18 GMT

消息:

You are not authorized to view this page
You do not have permission to view this directory or page using the credentials that you supplied because your Web browser is sending a WWW-Authenticate header field that the Web server is not configured to accept.

登录名和密码100%正确,网址也是。我正在使用的RaspverryPI上安装了OpenSSL,并在php.ini中启用了cURL

loginprocess.aspx在授权完成后将您重定向到studenthome.aspx,但我认为问题出在授权本身。

1 个答案:

答案 0 :(得分:3)

您正在尝试连接基本身份验证,而服务器正在请求集成Windows身份验证(NTLM)。

使用选项CURLAUTH_NTLM。

您不应将cookiesession设置为true。从手册:

TRUE将此标记为新的Cookie“会话”。它将强制libcurl忽略它将要加载的所有cookie,它们是来自前一个会话的“会话cookie”。默认情况下,libcurl始终存储和加载所有cookie,如果它们是会话cookie,则是独立的。会话cookie是没有到期日期的cookie,它们只是存在且仅存在于此“会话”中。

您的代码也有拼写错误。它应该是这样的:

    CURLOPT_HTTPHEADER => $header,
    CURLOPT_COOKIEFILE => "cookieFIle.txt",
    CURLOPT_COOKIEJAR => "cookieFIle.txt"
);