我在localhost上有一个角度应用作为前端:9000并在loclahost上作为后端航行:1337
在角度应用程序中,我这样做是为了查询服务器:
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!!");
})
};
这种行为有点奇怪。如果我转到角度应用程序并尝试从Firefox触发saveFood函数:
阻止跨源请求:同源策略禁止在localhost:1337 / food读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。
来自Chrome有点不同。有时我得到CORS错误,有时候没有,有时服务器上的模型甚至更新了值...但页面显示"不能POST /"
现在在我的sails应用程序中,我启用了CORS,就像这样: https://github.com/tarlepp/angular-sailsjs-boilerplate/blob/master/backend/config/cors.js#L71
编辑:当我检查请求的标题时,我看到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/
所以有一次它没有发布它而另一次发布它。但我总是得到"不能POST /"在页面上 如果要重现它,所有代码和步骤都在这里: http://okamuuu.hatenablog.com/entry/2014/04/10/135240
答案 0 :(得分:0)
端口有一个冒号,它被剥离你需要逃脱它
尝试单个'\'或双'\'反斜杠
http://localhost\:1337/
或
http://localhost\\:1337/
码
$resource('http://localhost\:1337/food', {
id: '@id'
}, {
update: {
method: 'PUT'
}
});
答案 1 :(得分:0)
尝试将此添加为config / routes.js中的第一个路径
'OPTIONS /*': function(req, res) {return res.send(200);},
Angular运行预检OPTIONS请求以检查授权内容。您需要回复此请求。
答案 2 :(得分:0)
Sails.js在config/cors
下为CORS提供配置。
您可以指定允许哪些外国主机请求您的数据。