XMLHttpRequest无法加载http://127.0.0.1:1337/。 请求的资源上没有“Access-Control-Allow-Origin”标题

我尝试使用Angular.js和本地运行的Node.js服务器从HTML页面发送和接收数据

app.controller("MainController", function MainController($scope, $http){ $scope.postIt = function() { //alert("posting..."); $http.post('http://127.0.0.1:1337/', {msg:'hello from Angular.js!'}) .success(function onSuccess(response){ console.log(response); $scope.$apply(function(){ $scope.testData = JSON.parse(response); console.log($scope.testData); }); }).error(function onError(){ console.log("AJAX failed!"); }); }; }); 
 <div id='content' ng-app='MyTutorialApp' ng-controller='MainController'> <p> <a ng-click="postIt()"> Click here to load data. </a> </p> </div> <script src="bower_components/angular/angular.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <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/'); 

如果使用angular向本地主机node.js服务器发送ajax请求,则应该将access-control-allow-origin放在接受ajax请求的目标服务器(即localhost)上,不要使用ajax请求发布它。