码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-05-23 17:00:24      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:nodejs   firefox   chrome   angularjs   跨域访问   

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

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

<span style="font-family:SimHei;font-size:18px;">           $http.get('http://localhost:3000/')
                .success(function (data) {
                  $scope.index = data;
                })
                .error(function (data) {
                   $scope.index = "";
                });</span>

服务器端我简化如下:

<span style="font-family:SimHei;font-size:18px;">var app= require('express');
/* GET home page. */
app.get('/', function(req, res, next) {
    res.send("hello world");
});

</span>

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

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

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

<span style="font-family:SimHei;font-size:18px;">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();
});</span>


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


我觉得以下几篇文章,对我解决这个问题帮助很大,推荐给大家:

http://my.oschina.net/blogshi/blog/303758

http://zhuanlan.zhihu.com/FrontendMagazine/19920223

http://www.cnblogs.com/idche/p/3190926.html




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

标签:nodejs   firefox   chrome   angularjs   跨域访问   

原文地址:http://blog.csdn.net/jiangkai528/article/details/45934639

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!