.htaccess 调试Apache AllowMethods错误

uhry853o  于 2022-11-16  发布在  Apache
关注(0)|答案(2)|浏览(129)

我们正在为我们的移动的应用程序运行一个API,并通过正确的HTTP头,能够使用实时API在本地进行开发,而无需“CORS插件”。
现在,它不再工作了,可能是因为将域名从一个用户移到另一个用户(使用DirectAdmin),但我不知道如何修复它。将域名移回原始用户并不能修复它。我们已经运行Apache 2.4很长一段时间了,这不是什么新鲜事。
我尝试将以下内容添加到httpd.conf中:

<Location /api>
    AllowMethods GET POST OPTIONS DELETE PUT
    Require all granted
</Location>
<Directory /home/username/domains/example.com/private_html/www/api>
    AllowMethods GET POST OPTIONS DELETE PUT
    Require all granted
</Directory>

我通过成功更改ErrorLog文件位置验证了是否位于正确的VirtualHost块中。
我还将Require all granted添加到从private_html文件夹到api文件夹的所有.htaccess文档中,但错误日志一直显示:[allowmethods:error] [pid ...] [client ...] AH01623: client method denied by server configuration: 'OPTIONS' to /home/username/domains/example.com/private_html/www/api
请注意,我们的移动的应用程序实际上仍然工作(GET和POST),但PUT和DELETE不工作,就像OPTIONS一样。
我如何调试这个?我如何让Apache告诉我哪个策略阻止了这个方法?

dwbf0jvd

dwbf0jvd1#

我终于解决了这个httpd.conf块的问题:

<Location "/">
    AllowMethods GET POST OPTIONS DELETE PUT
    Require all granted
</Location>

我最初试图将其限制为仅API URL,但显然由于RewriteRules,这变得复杂了。/api上的第一个请求被传递,但我需要为每个发生的RewriteRule创建一个新的块。因此我使用Location“/”来完全允许它...希望这不会引入安全问题。

bgtovc5b

bgtovc5b2#

@Sygmoral这也解决了我的问题!
如果您在新的DirectAdmin环境中获得OPTIONS方法的响应时收到此消息:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method OPTIONS is not allowed for this URL.</p>
</body></html>

或者,如果您已检查包含以下内容的apache错误日志:AH01623: client method denied by server configuration: 'OPTIONS'
您应该转到DirectAdmin“自定义HTTPD配置“一节(以管理员身份),并将这些行添加到您的域自定义httpd.conf中:

<Location "/">
    AllowMethods GET POST OPTIONS DELETE PUT
    Require all granted
</Location>

相关问题