代码之家  ›  专栏  ›  技术社区  ›  Lioo

代理localhost上的cURL返回拒绝访问

  •  0
  • Lioo  · 技术社区  · 6 年前

    我正在尝试访问 .php 来自其他文件 。php 使用 cURL

    两个都打开了 localhost 我用的是 proxy

    问题所在

    如果我尝试使用postman或direct在浏览器上访问,则所需的文件将正确返回。

    但是,每次我尝试从其他文件访问此文件时 。php 文件使用 卷曲 ,并传递所有代理和身份验证值,它将提供以下内容:

    拒绝访问(authentication\u失败)

    无法验证您的凭据:“缺少凭据。”。在验证您的凭据之前,将不允许您访问。 这通常是由错误的用户名和/或密码引起的,但也可能是由网络问题引起的。

    如需帮助,请联系您的网络支持团队。

    她是我的卷发:

    $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;
    }
    

    有什么想法吗?

    编辑 :

    除了尝试通过邮递员或浏览器访问,如果我 卷曲 直接从命令行开始,它也可以工作。

    编辑

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

    4 回复  |  直到 6 年前
        1
  •  0
  •   Ken    6 年前

    是否涉及重定向?记住,cURL不会遵循重定向,除非通过传递 --location 旗帜

    如果从命令行运行它,它是否工作?试试看,试着传球 --verbose --include 查看返回的标题。

        2
  •  0
  •   Cemal    6 年前

    更新代码如下

    $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;
    }
    
        3
  •  0
  •   toor    6 年前
    <?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;
    }
    
        4
  •  0
  •   Lioo    6 年前

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

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