我正在尝试使用.php
从其他.php
访问cURL
个文件。
两者都在localhost
,而我正在使用proxy
。
问题
如果我尝试使用邮递员或直接在浏览器上访问,则所需文件将正确返回。
但是,每次我尝试使用.php
从另一个cURL
文件访问此文件,并传递所有代理和身份验证值时,它会给我以下内容:
拒绝访问(authentication_failed)
您的凭据无法通过身份验证:“缺少凭据。”在验证凭据之前,您不会被允许访问。 这通常是由不正确的用户名和/或密码引起的,但也可能是由网络问题引起的。
如需帮助,请与您的网络支持团队联系。
她是我的cURL:
$curl = curl_init();
curl_setopt_array($curl,array(
CURLOPT_PROXY => "proxy.myspecificproxy.com.br",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => "localhost/MyDesiredFile.php?param=test&mail=test%40test.com",
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_PROXYUSERPWD => "myuser:mypassword123",
CURLOPT_PROXYPORT => "8080",
CURLOPT_PROXYTYPE => 'HTTP',
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
有什么想法吗?
修改:
除了尝试通过邮递员或浏览器访问,如果我cURL
直接从命令行访问,它也可以。
修改
尝试禁用本地地址的代理,但结果没有变化。
答案 0 :(得分:0)
是否涉及重定向?请记住,除非您通过传递--location
标志告诉它,否则cURL不会遵循重定向。
如果从命令行运行它是否有效?试试这个,然后尝试传递--verbose
和--include
来查看返回的标头。
答案 1 :(得分:0)
更新您的代码,如下所示
$curl = curl_init();
curl_setopt_array($curl,array(
CURLOPT_PROXY => "proxy.myspecificproxy.com.br",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => "localhost/MyDesiredFile.php?param=test&mail=test%40test.com",
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_PROXYUSERPWD => "myuser:mypassword123",
CURLOPT_PROXYPORT => "8080",
CURLOPT_PROXYTYPE => 'HTTP',
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
答案 2 :(得分:0)
<?php
$curl = curl_init();
curl_setopt_array($curl,array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => "http://localhost/",
CURLOPT_FOLLOWLOCATION => true,
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
答案 3 :(得分:0)
看起来这是特权中的错误配置。
我联系了公司的支持团队,问题解决了。