代理localhost上的cURL返回Access Denied

时间:2018-03-29 19:02:15

标签: php curl proxy localhost

我正在尝试使用.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直接从命令行访问,它也可以。

修改

尝试禁用本地地址的代理,但结果没有变化。

4 个答案:

答案 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)

看起来这是特权中的错误配置。

我联系了公司的支持团队,问题解决了。