如何配置Apache让PHP处理OPTIONS HTTP请求?

Rob*_*jon 6 php apache configuration http

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

PHP方面不是问题.如果我使用curl发出GET/POST/HEAD/PUT /等.请求他们都去剧本,它清楚地处理它们.但是,如果我发出OPTIONS请求,它永远不会到达脚本:Apache会立即回复列出它认为适合此资源的一组方法.我可以告诉脚本没有运行(没有记录,没有输出使它成为响应,等等).

我一直在经历Apache配置,确保没有适用的.htaccess阻碍,我已经调整了一些诸如Limit/LimitExcept指令之类的东西,但我不能让它改变它的行为.我也试图从我年轻时就找到一种可以帮助我的技术的信息:NPH(非解析标题)脚本; 但显然现在已经消失了(至少,我找不到任何有关它的最新信息).

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

Rob*_*bie 3

我刚刚测试了我自己的 PHP(5.3、Apache 2.2),它仍然可以工作(就像它已经工作了一段时间一样)。选项被发送,并出现在 $_SERVER 数组中,正如您所期望的那样

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

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

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

我能想到的就这么多了。否则,正如我所建议的,从头开始(它有效)并建立其他所有内容,直到它不起作用为止。