目前做的一个项目,前端采用的是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
时间: 2024-10-11 06:15:40