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就可以访问了。