2014-10-20 20 views
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/'); 

回答

2

,如果您使用的角度來發送Ajax請求到localhost的Node.js服務器,你應該把訪問控制,允許原產地在目標服務器上接受Ajax請求即本地主機,不要發佈與Ajax請求。

相關問題