我在angular.js APP和我的express.js REST之間進行通信時遇到問題。無法從angular.js發送POST到express.js
我使用yeoman 1.0和generator-angular 0.7.1。
我試圖爲我的grunt serve
使用中間件配置,但我沒有得到它的工作。
角應用(端口:9000):
angular.module('wboxApp')
.controller('AdminCtrl', function ($scope, $routeParams, $http, fbRef) {
var ref = fbRef();
var token = $routeParams.token;
$http.post('http://127.0.0.1:3000/box/token/get', {token: token}).success(function (data) {
console.log(data);
}
});
});
快遞API(端口:3000):
app.post('/box/token/get', function (req, res) {
res.header('Access-Control-Allow-Origin', req.headers.origin || "*");
res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'content-Type,x-requested-with');
var token = req.body.token;
var tokenRef = ref.child('tokens').child(token);
tokenRef.once('value', function (data) {
var fullToken = data.val();
fullToken = fullToken + '.' + token;
if (data.val()) {
res.json({fullToken: fullToken});
} else {
res.json({fullToken: null});
}
});
});
瀏覽器錯誤:
OPTIONS http://127.0.0.1:3000/box/token/get No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:9000' is therefore not allowed access.
XMLHttpRequest cannot load http://127.0.0.1:3000/box/token/get. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:9000' is therefore not allowed access.
我還添加了'res.header( '訪問控制允許的方法', 'GET,POST,PUT,HEAD,DELETE,OPTIONS' );'現在它工作。 – cebor
我不認爲你的情況是需要的。 'Access-Control-Allow-Methods'僅用於預檢查的請求。而你的是一個似乎沒有預衝的帖子請求。請求的內容類型是什麼? –
'應用程序/ json',但我認爲angular.post需要'選項',而不會出現錯誤。 – cebor