我们正在为我们的移动的应用程序运行一个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告诉我哪个策略阻止了这个方法?
2条答案
按热度按时间dwbf0jvd1#
我终于解决了这个httpd.conf块的问题:
我最初试图将其限制为仅API URL,但显然由于RewriteRules,这变得复杂了。/api上的第一个请求被传递,但我需要为每个发生的RewriteRule创建一个新的块。因此我使用Location“/”来完全允许它...希望这不会引入安全问题。
bgtovc5b2#
@Sygmoral这也解决了我的问题!
如果您在新的DirectAdmin环境中获得OPTIONS方法的响应时收到此消息:
或者,如果您已检查包含以下内容的apache错误日志:
AH01623: client method denied by server configuration: 'OPTIONS'
您应该转到DirectAdmin“自定义HTTPD配置“一节(以管理员身份),并将这些行添加到您的域自定义httpd.conf中: