Angularjs 船帆/角度交叉原点请求被阻止

Angularjs 船帆/角度交叉原点请求被阻止,angularjs,node.js,model-view-controller,cors,sails.js,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'

我在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功能:

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

和Chrome有点不同。有时我得到CORS错误,有时没有,有时服务器上的模型甚至更新了值。。。但页面显示“无法发布/”

现在,在我的sails应用程序中,我启用了CORS,如下所示:

编辑:当我检查请求的标题时,我看到了两个帖子,一个在localhost:1337/food上,其中包含访问控制允许来源:localhost:9000,另一个在localhost:9000/#/food上,其中没有和get 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://localhost\:1337/

代码


尝试在config/routes.js中将其添加为第一条路由

'OPTIONS /*': function(req, res) {return res.send(200);},

Angular运行飞行前选项请求以检查授权内容。您需要响应此请求

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


您可以指定允许哪些外部主机请求您的数据

错误:未能在“XMLHttpRequest”上执行“send”:未能加载“检查您的控制台,看看您是否看到选项请求也被调用和响应。具体取决于。。。有时候这个选项被接受有时候是404,听起来很奇怪。选项请求上的404错误是您在没有该行代码的情况下所期望的。我认为,如果你断断续续地得到它,就意味着一个更大的问题。我会首先尝试与邮递员,以消除或挑出客户的问题?注意,404并不总是在选项,大多数时候,它的邮政。我不知道关于Postman的事,我要去看看。如果Postman和你的客户端浏览器一样,那么我建议发布你的路由和策略(以及任何其他自定义中间件)。
$resource('http://localhost\:1337/food', {
        id: '@id'
    }, {
        update: {
            method: 'PUT'
        }   
    }); 
'OPTIONS /*': function(req, res) {return res.send(200);},