【问题标题】:Apache server response status 301Apache 服务器响应状态 301
【发布时间】:2015-05-11 07:37:15
【问题描述】:

我有一些服务器到服务器的通信驱动一个出错的 PHP 程序。

我需要了解可能导致 服务器 触发的调用与 浏览器 触发的行为不同的原因URL 调用,以及如何通过运行 PHP 程序来使服务器触发的调用行为与浏览器相同。

我正在使用第 3 方远程 Web 应用程序,该应用程序需要很长时间才能进行一些计算。当我启动这个 Web 应用程序(使用 REST 调用)时,我向它传递了一个回调 PHP 程序的 URL,它应该在完成时触发以通知我。我的触发回调程序应该检索计算结果(使用 REST 调用),然后更新我自己服务器上的文件。

手动,这工作正常。但作为自动回拨,它不会。

从 apache 访问日志中,我可以看到远程服务器正在按预期调用我的 URL,但是我的 Apache 访问日志显示服务器响应状态为 301,并且我的 PHP 程序没有运行:

54.235.170.186 - - [10/May/2015:22:20:06 -0700] "GET /apps/_recap/ReCapRetrieveOBJ-markers_v2.php?scanID=slm-mkr-6-2B-cube201505102013 HTTP/1.1" 301 610 "-" "ServerUserAgent" 

现在,如果我使用相同的 URL 和查询字符串并将其输入浏览器,我的 PHP 代码可以完美运行,并且我在访问日志中看到这两条记录(其中第二行是服务器响应状态 200) :

173.164.203.50 - - [10/May/2015:23:35:03 -0700] "GET /apps/_recap/ReCapRetrieveOBJ-markers_v2.php?scanID=slm-mkr-6-2B-cube201505102013 HTTP/1.1" 301 635 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36" 
173.164.203.50 - - [10/May/2015:23:35:03 -0700] "GET /apps/_recap/ReCapRetrieveOBJ-markers_v2.php?scanID=slm-mkr-6-2B-cube201505102013 HTTP/1.1" 200 3401 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36" 

这是我的问题:

我的 PHP 代码中有哪些情况会导致 301?

如何让触发的回调(使用 ServerUserAgent)以相同的方式响应浏览器触发的 URL?

【问题讨论】:

    标签: php apache redirect


    【解决方案1】:

    此问题发生在 Dreamhost VPS 服务器上。我们的旧服务器运行的是 Debian,而发生此问题的新服务器运行的是 Ubuntu。显然,这两个操作系统之间的 Web 服务器设置不同,因此以前运行良好的代码在不再运行之前运行良好。

    从上面的 cmets 中,我认为我的代码中有一些东西导致了重定向,但现在我找到了问题的根源,我发现它与我的代码完全无关。相反,这与 Dreamhost 服务器可以配置为支持对 domain.com 和 www.domain.com 的调用有关,它通过将 domain.com 重定向到 www.domain.com 子域来实现这一点。

    通过添加 www.我的回调的 URL 的前缀,从而给出了规范的 URL,我的问题被消除了(无论是服务器发起的调用,还是浏览器发起的调用都没有发生重定向)。

    【讨论】:

      【解决方案2】:

      进行 API 调用以遵循重定向。例如,如果使用 PHP 和 cURL。

      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      

      或者,清理您的 Web 服务器配置以设置无重定向。

      【讨论】:

      • 为什么网络服务器为服务器到服务器的通信 (ServerUserAgent) 进行重定向,但从浏览器启动 URL 时却没有?重定向来自哪里?
      • 当您使用 mozilla 浏览器 ...301 635 "-" "Mozilla/5.0 (Macintosh 连接时,也会出现重定向。我参考你的问题。
      • 我还是一头雾水。我在我的代码中没有看到任何请求重定向的内容。什么可能导致重定向发生?我确实看到当 Mozilla 浏览器启动呼叫时正在发生重定向,但我也看到来自 ServerUserAgent 的呼叫以静默方式终止时成功(因此是第二行)。我怎样才能让 ServerUserAgent 调用也成功?
      • 这是因为您的 Web 服务器配置。卷曲跟随位置将进行第二次成功调用,就像使用标准浏览器一样。
      • 可能是apache rewrite使用不当造成的,也可能是其他原因。
      猜你喜欢
      • 2021-12-28
      • 2018-02-19
      • 2016-09-11
      • 2016-06-11
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多