angularjs 控制器不能訪問nodejs 3000端口,跨域訪問

目前做的一個項目,前端採用的是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

 

 

 

 

發佈了38 篇原創文章 · 獲贊 39 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章