angularjs 控制器不能访问nodejs 3000端口,跨域访问

目前做的一个项目,前端采用的是angularjs,后端nodejs做服务器。

我尝试使用接下里的方式来发起对nodejs服务器的请求:

$http.get('http://localhost:3000/')  
               .success(function (data) {  
                 $scope.index = data;  
               })  
               .error(function (data) {  
                  $scope.index = "";  
               });  

服务器端如下:

var app= require('express');  
/* GET home page. */  
app.get('/', function(req, res, next) {  
    res.send("hello world");  
});  

使用IE11浏览器,能够成功返回hello world,但是Firefox和Chrome却不能,F12打开调试器,发现是跨域访问造成的,属于浏览器保护机制。

 

我的解决办法是,是使用CORS( 跨域资源共享(Cross Origin Resource Sharing,CORS)解决跨域问题的好,从而可以使用XHR从不同的源加载数据和资源。)

//nodejs服务端跨域访问设置 

在app.js里写:

app.use(function(req, res, next) {  
    res.setHeader('Access-Control-Allow-Origin', '*');  
    res.setHeader('Access-Control-Allow-Credentials', true);  
    res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');  
    next();  
});  

 然后Firefox和Chrome就可以访问了。

猜你喜欢

转载自553570934.iteye.com/blog/2321960