【发布时间】:2012-04-07 00:14:44
【问题描述】:
我想使用 cURL 函数,但我在代理后面,所以我收到 HTTP/1.1 407 Proxy Authentication Required 错误...
这是我使用的php代码:
$proxy_user = 'Michiel';
$proxy_pass = 'mypassword';
$proxy_url = 'myproxyurl:port';
$proxy = true;
$service_url = "https://www.myapiurltocall.com";
$service_user = 'user:password:FO';
$service_pass = 'password';
$ch = curl_init($service_url);
// Set proxy if necessary
if ($proxy) {
curl_setopt($ch, CURLOPT_PROXY, $proxy_url);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_user.':'.$proxy_pass);
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
}
// Set service authentication
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, "{$service_user}:{$service_pass}");
// HTTP headers
$headers['Authorization'] = 'Basic ' . base64_encode("$proxy_user:$proxy_pass");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
//WARNING: this would prevent curl from detecting a 'man in the middle' attack
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
$data = curl_exec($ch);
而且我不知道我做错了什么......我该如何解决这个错误?
【问题讨论】:
-
假设
$proxy_user:$proxy_pass是正确的值,如果您在办公室防火墙后面,则要使用的身份验证凭据将是管理员的凭据,而不是您自己的...我遇到了一些非常在我的工作环境中也有类似的情况,因为我的普通凭证没有必要的权限。 -
是的,在办公室防火墙后面。 $proxy_user 和 $proxy 通行证是 100% 正确的(我可以使用我的 webmail 和带有这些凭据的通信器,所以......)我的电脑或网络的管理员你的意思是?
-
好的,太好了!请添加它作为答案,所以我可以接受它:)