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

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

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

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

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

最佳答案
我刚刚测试了我自己的PHP(5.3,Apache 2.2),它仍然有效(因为它已经有一段时间了). OPTIONS通过发送,并出现在$_SERVER数组中,正如您所期望的那样

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

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

>限制指令.你说你在那里检查过,但只是为了调试,删除所有引用.在vhosts中包含任何内容以及可以单独更改目录.
>相同的LimitExcept(你说你试过 – 只需将它们全部删除)
>检查.conf和.htaccess是否有基于RequestHeader或REQUESTHEADER的重定向或其他条件(进行搜索和分析)
> [我现在也读过关于检查THE_REQUEST的内容,但之前从未听说过.还值得检查吗?]
>最后,检查您没有为OPTIONS指定特定的处理程序,即脚本OPTIONS / cgi-bin / optionshandler,并且您的PHP处理程序同样被指定为仅处理GET和POST.再次记住,vhosts和目录以及.htaccess可以单独更改,因此请检查所有内容.

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

转载注明原文:如何配置Apache让PHP处理OPTIONS HTTP请求? - 代码日志