angularjs - Sails/Angular 跨源请求被阻止

标签 angularjs node.js model-view-controller cors sails.js

我在 localhost:9000 上有一个 Angular 应用程序作为前端,在 loclahost:1337 上作为后端 sails

在 Angular 应用程序中,我这样做是为了查询服务器:

angular.module('webApp')
.controller('FoodCtrl', function($scope, $resource) {

    var Food = $resource('http://localhost:1337/food', {
        id: '@id'
    }, {
        update: {
            method: 'PUT'
        }   
    }); 

    $scope.food = new Food();
    $scope.foodList = Food.query();

    $scope.saveFood = function() {

        var method = $scope.food.id ? '$update' : '$save';

        $scope.food[method]({}, function() {

            $scope.food = new Food();
            $scope.foodList = Food.query();

            console.log("Saved!!");
        })
    };

行为有点奇怪。如果我转到 Angular 应用程序并尝试从 Firefox 触发 saveFood 函数:

跨源请求被阻止:同源策略不允许读取位于 localhost:1337/food 的远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。

与 Chrome 有点不同。有时我会收到 CORS 错误,有时不会,有时服务器上的模型甚至会用值更新...但是页面显示“无法发布/”

现在,在我的 sails 应用程序中,我启用了 CORS,就像这样: https://github.com/tarlepp/angular-sailsjs-boilerplate/blob/master/backend/config/cors.js#L71

编辑:当我检查请求的 header 时,我看到 2 个帖子,一个在 localhost:1337/food 上,其中包含 Access-Control-Allow-Origin: localhost:9000,另一个在 localhost:9000/#/food没有得到 404

这是 chrome 控制台的示例输出:

2Navigated to http://localhost:9000/
(index):1 POST http://localhost:9000/ 404 (Not Found)
2Navigated to http://localhost:9000/
(index):1 POST http://localhost:9000/ 404 (Not Found)
2Navigated to http://localhost:9000/
food.js:33 Saved!!
(index):1 POST http://localhost:9000/ 404 (Not Found)
Navigated to http://localhost:9000/

因此,有一次它没有发布,而另一次却发布了。但我总是在页面上看到“无法发布/” 如果你想重现它,所有的代码和步骤都在这里: http://okamuuu.hatenablog.com/entry/2014/04/10/135240

最佳答案

Sails.js 在 config/cors 下为 CORS 提供配置。

您可以在此处指定允许哪些外国主机请求您的数据。

关于angularjs - Sails/Angular 跨源请求被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662922/

相关文章:

Javascript sinon.js spy 在一个测试用例中工作,但在其他测试用例中不起作用

c# - 通过硬编码的 html 选择设置 c# mvc session 变量

model-view-controller - Qt 中的 MVC 与 Gtk+

javascript - 更新名称未知的对象的模型值

javascript - 在 Angular 中隐藏数组中的不匹配元素

python - 从 Python 发布时订阅不起作用

node.js - 使用 PM2 运行自定义 npm 脚本

java - 如何将带有斜杠的 URL 重定向到没有斜杠的相应 URL?

angularjs - 如何在 AngularJS 中禁用 IE8 和 IE9 上的 #hashbang 重定向

Angularjs 设置焦点