欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

angularjs 控制器不能访问nodejs 3000端口,跨域访问 博客分类: angularjsjs基础node  

程序员文章站 2024-02-10 11:43:46
...

目前做的一个项目,前端采用的是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就可以访问了。