目前做的一個項目,前端採用的是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.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就可以成功訪問了。
歡迎關注我的微信公衆號-搜索 “前端琅琊閣“ 即可
如果還有問題,可以向我提問:
我覺得以下幾篇文章,對我解決這個問題幫助很大,推薦給大家:
http://my.oschina.net/blogshi/blog/303758
http://zhuanlan.zhihu.com/FrontendMagazine/19920223
http://www.cnblogs.com/idche/p/3190926.html