7

为了为 CORS(跨域请求)设置适当的测试套件,我需要能够直接从脚本处理 HTTP OPTIONS 方法。因此,我有一个简单的 PHP 脚本来检测 OPTIONS 方法,并通过输出一些特定的标题做出相应的反应。

PHP端不是问题。如果我使用 curl 发出 GET/POST/HEAD/PUT/等。请求他们都去脚本,它显然可以很好地处理它们。但是,如果我发出 OPTIONS 请求,它永远不会到达脚本:Apache 会立即回复并列出它认为适合该资源的一组方法。我可以说脚本没有运行(没有日志记录,它的输出都没有进入响应,等等)。

我一直在检查 Apache 配置,确保没有适用的 .htaccess 妨碍我,我已经调整了很多东西,例如 Limit/LimitExcept 指令,但我无法让它改变它的行为。我还尝试从我年轻时找到一种可能对这里有所帮助的技术的信息:NPH(非解析的标头)脚本;但显然现在已经消失了(至少,我找不到任何关于它的最新信息)。

所以问题是:如何调整 Apache 的配置,以便让我的脚本处理 OPTIONS?

4

1 回答 1

3

我刚刚测试了我自己的 PHP(5.3,Apache 2.2),它仍然可以工作(因为它已经有一段时间了)。OPTIONS 被发送,并出现在 $_SERVER 数组中,如您所料

目标应该是将设置恢复为默认设置(应该可以),然后使用您需要的其他选项建立您的 conf 备份。

否则,如果没有看到 .conf 文件,我们就会失明——所以这里有一些东西需要寻找。

  1. 限制指令。你说你在那里检查过,但只是为了调试,删除所有引用。可以单独更改虚拟主机和目录中的任何内容。
  2. 与 LimitExcept 相同(您说您尝试过 - 只需将它们全部删除)
  3. 检查 .conf 和 .htaccess 是否有任何重定向或其他基于RequestHeader或的条件REQUESTHEADER(进行搜索和分析)
  4. [我刚刚也读过一些关于检查的东西,THE_REQUEST但以前从未听说过。也值得检查?]
  5. 最后,检查您没有为 OPTIONS 指定特定的处理程序,即Script OPTIONS /cgi-bin/optionshandler您的 PHP 处理程序同样被指定为仅处理 GET 和 POST。再次记住 vhosts 和目录和 .htaccess 可以单独更改,因此请检查它们。

这就是我能想到的。否则,正如我建议的那样,从头开始(它有效)并构建其他所有内容,直到它不起作用。

于 2012-11-27T20:23:45.787 回答