我使用Yeoman部署了一个AngularJS应用程序。 Cakephp RESTful后端。
Angular应用程序发送OPTIONS预检请求,后端在nginx中以禁止(403)响应,以解决我使用过的这个问题:
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Headers' 'X-AuthTokenHeader,Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
如何在Apache中执行此操作?请提供一些初步指导/意见,我将在此之后详细说明并详细说明问题。
答案 0 :(得分:8)
我有同样的问题,给出的答案并没有解决问题。
通过查看更多我发现你可以使用重写来做到这一点,例如:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
(确保启用重写模式)
然后你应该使用“always set”设置标题,例如:
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS"
答案 1 :(得分:5)
将此.htaccess文件添加到您的apache根目录:
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
确保激活apache模块标头:
a2enmod headers
答案 2 :(得分:1)
如果有帮助 - 我正在使用身份验证,因此我还必须添加以下内容以使POST请求为我工作:
<LimitExcept OPTIONS>
Require valid-user
</LimitExcept>