【问题标题】:Server configured to send 404 to requests from cURL?服务器配置为向来自 cURL 的请求发送 404?
【发布时间】:2011-09-27 09:49:58
【问题描述】:

我正在为客户做一些自动化操作,并计划在此过程中通过 cURL 运行一些 php 脚本。但是,在浏览器中运行良好的 URL 在被 cURL 命中时会出现 404。我在其他地方看到过一些服务器被配置为以这种方式阻止 cURL。

这是我可以在httpd.conf 中编辑的设置吗?似乎不在php.ini

我的代码是这样的:

  $url = "http://site.com/xxx/curl.php?cID=$c->cID&db=$c->db&un=$c->un&/";
  echo "$url";

  // spoofing FireFox 2.0
  $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) 
    Gecko/20061204 Firefox/2.0.0.1";
  $ch = curl_init ($url) ;
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ;
  curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  $res = curl_exec ($ch);

当我回显$res 时,我从默认的 404 错误页面获取代码。如果我复制回显的 $url 并粘贴到浏览器中,我会得到很好的页面。还尝试使用相对路径和完整的服务器路径。

今天添加了用户代理欺骗,以尝试查看说我不是 cURL 是否会有所帮助,但响应中没有任何变化。

关于如何追查此问题的根本原因或更好地解决它的任何想法?

【问题讨论】:

  • 转储由 firefox 输出的全套标头。转储 curl 当前输出的全部标头。不断调整你的卷曲设置,直到它们匹配。如果您的标头相同(包括 cookie),并且您以实际的速度请求页面,则没有真正的方法可以区分 curl 和真实浏览器之间的区别。 ...嗯,一个真正的浏览器请求图像和脚本——不仅仅是 HTML :)

标签: php curl http-status-code-404


【解决方案1】:

事实证明,The Planet 的好心人对此帐户存在一些内部路由问题。 /etc/sysconfig/network 中的错误主机名设置和 /etc/resolv.conf 中的错误解析器等等。这个站点和许多其他站点最近从他们的一个服务器迁移到另一个。尚未修复,但这就是 404 的原因。

谢谢。

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多