3

我试图进行以下设置:

API

api.domain.com

应用程序

域名.com

我已经设置了 2 个不同的 nginx 配置,每个 2 个 url 一个。当在浏览器(api.domain.com/test)中执行常规 GET 请求时,它们都可以工作,但是当从 angularjs(POST)执行 $resource 调用时,它们都会崩溃。这会返回一个

     not allowed by Access-Control-Allow-Origin.

我已经做了一段时间了,一直在玩不同的配置文件。我目前正在使用以下文件,但我不知道这是否可行。

http://paste.laravel.com/h6U

任何帮助将不胜感激

4

3 回答 3

0

要在 Angular JS 中使用 CORS,请尝试将此配置添加到应用程序的 Angular 模块中

angular.module('simpleRESTapp')
.config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];
}])

对于 Nginx 端,您需要配置 nginx 或您的应用程序服务器以返回Access-Control-Allow-Origin包含客户端发送的标头值的Origin标头(如果它与允许列表匹配)。我想这个配置应该可以工作,

if ($http_origin ~ "^(http://developers.example.com|http://example.com)$") {
    add_header "Access-Control-Allow-Origin" $http_origin;
}
于 2013-06-10T11:26:52.553 回答
0

你可以参考这篇文章

我也是 angularjs 的新手。我用 nodejs 编写我的后端代码。当尝试使用 angularjs 在前端的后端使用 api 时,我遇到了和你一样的问题。

所以我使用nginx来存储我的应用程序,然后在我的/etc/nginx/conf.d/default.conf文件中我可以用nginx更改路由器,这样可以避免Access-Control-Allow-Origin引起的问题。

希望这可以帮到你。

于 2013-05-31T06:51:18.607 回答
0

我对 angularJs 和 Nginx 有同样的问题,所以我在我的 nginx 配置中添加了以下代码。经过大量搜索后,我发现的重要事情是 [总是] 关键。使用 [always] 键的重点是,当我使用代码时,我没有得到任何错误状态码,而我只得到 200 和 201,其他状态码会出现跨源错误。

 add_header 'Access-Control-Allow-Origin' http://127.0.0.1 always;
 add_header 'Access-Control-Allow_Credentials' 'true';
 add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Access-Control-Allow-Origin';
 add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';

于 2018-08-12T09:51:37.457 回答