【问题标题】:Curl giving 503 Service Unavailable in response卷曲给出 503 Service Unavailable 响应
【发布时间】:2014-02-14 06:04:24
【问题描述】:

我的网址“www.example.com”在浏览器中运行,但是当我通过 URL “www.example.com”的 curl 获得响应时,我收到 503 服务不可用响应。

我使用了以下代码:

 $url = 'http://www.example.com';
   $curl_handle = curl_init();
    curl_setopt($curl_handle, CURLOPT_URL, $url);
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($curl_handle, CURLOPT_TIMEOUT, 0);
    curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);  
    curl_setopt($curl_handle, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
    curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
    $JsonResponse = curl_exec($curl_handle);
    $http_code = curl_getinfo($curl_handle);
    print_r($http_code);die;

【问题讨论】:

    标签: php curl


    【解决方案1】:

    我很确定远程服务器需要特定的 HTTP 标头(例如 cookie),例如会话令牌或语言首选项。

    您必须分析从浏览器发送到远程服务器的 HTTP 流量,并自己找到所需的 HTTP 标头。我推荐像Fiddler 这样的工具。

    一个例子:

    GET / HTTP/1.1
    Host: www.example.com
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Cookie: foo=bar
    Connection: keep-alive
    

    假设远程服务器需要客户端发送一个名为foo 的cookie,如果你省略它,他可能会向你发送503 或400 错误消息。您还必须从 cURL 发送 cookie 才能获得成功的响应,就像普通客户端一样。

    【讨论】:

    • 我分析并添加了所需的自定义标头,但仍然收到 503 错误消息。
    • @versha:您能否向我们提供更多您实际发送的信息?
    • 当我们通过本地主机访问“example.com”但从远程服务器访问时得到响应,我们得到 503 服务不可用错误。
    • 您能否确认您的远程服务器甚至可以访问公共互联网站点?这可能与 curl 无关,更多地与远程服务器上的公共 Internet 可访问性有关。如果您可以远程连接到远程服务器(通过 RDP 或类似方式),您可以在该服务器上打开浏览器以连接到任何公共互联网站点吗?服务器的防火墙可能会阻止这些连接。
    猜你喜欢
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多