繁体   English   中英

php curl-使用HTTP身份验证访问URL(需要帮助)

[英]php curl - accessing url with http authentication (need help)

我在HTTP身份验证中有问题。 我无法获取此url的内容,因为它需要http auth。

码:

<?php

$url = "http://www.abcdefg.com/12345/";

$username = 'username';
$password = 'password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

$out = curl_exec($ch);

print "error:" . curl_error($ch) . "<br />";
print "output:" . $out . "<br /><br />";

curl_close($ch);

?>

问题是:它没有显示真实内容,而是显示“找到302,文档已移至此处”。

我试过了“ http:// username:password@www.abcdefg.com/12345/”,该方法无效。

访问此url(1)时,会弹出一个窗口询问用户名和密码。 但弹出窗口来自另一个url(2)(一个sso身份验证服务器)。 如果通过身份验证。 然后它又回到url(1)。 目前,我可以访问此url(1)的内容。

我使用firebug通过直接从浏览器访问url得到以下消息:

步骤1

URL: GET http://www.abcdefg.com/12345/
Status: 302 Found
Protocol: http

第2步

URL: GET https://www.ssoauth.com/obrareq.cgi?wh=xxx wu=xxx wo=xxx rh=http://www.abcdefg.com ru=/12345/
Status: 302 Redirect
Protocol: https

第三步

URL: GET http://www.abcdefg.com/obrar.cgi?cookie=xxxxxxxxxxxxxxx
Status: 302 Found
Protocol: http

第四步

URL: GET http://www.abcdefg.com/12345/
Status: 200 OK
Protocol: http

然后显示内容…

这与Cookie有关吗? 如何使用php curl读取内容?

您必须设置:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

这将使cURL服从302并生成其他请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM