1
我嘗試發送和接收Angular.js從HTML網頁數據和本地運行的Node.js服務器XMLHttpRequest無法加載http://127.0.0.1:1337/。沒有「訪問控制允許來源」標頭出現在所請求的資源
app.controller("MainController", function MainController($scope, $http){ \t \t
\t $scope.postIt = function() {
\t \t //alert("posting...");
\t \t $http.post('http://127.0.0.1:1337/', {msg:'hello from Angular.js!'})
\t \t .success(function onSuccess(response){
\t console.log(response);
\t $scope.$apply(function(){
\t $scope.testData = JSON.parse(response);
\t console.log($scope.testData);
\t });
\t }).error(function onError(){
\t console.log("AJAX failed!");
\t });
};
}); \t
<div id='content'
ng-app='MyTutorialApp'
ng-controller='MainController'>
\t <p>
<a ng-click="postIt()">
Click here to load data.
</a>
</p>
</div> \t
\t <script src="bower_components/angular/angular.js" type="text/javascript"></script>
\t <script src="app.js" type="text/javascript"></script>
\t <script src="maincontroller.js" type="text/javascript"></script>
然後我得到錯誤:
XMLHttpRequest cannot load http://127.0.0.1:1337/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
我嘗試應用標頭,app.js
var app = angular.module('MyTutorialApp', [], function($httpProvider) {
$httpProvider.defaults.headers.post['Access-Control-Allow-Origin'] = 'http://127.0.0.1:1337/';
});
但這不起作用。
Node.js的代碼
var http = require('http');
http.createServer(function handler(req, res) {
console.log(req.method, req.url, req.httpVersion, req.headers);
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello from Node.js\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');