【发布时间】: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?
【问题讨论】: