Node.js實現CORS跨域資源共享

什麼是CORS

CORS(Cross-origin resource sharing),跨域資源共享,是一份瀏覽器技術的規範,用來避開瀏覽器的同源策略

簡單來說就是解決跨域問題的除了jsonp外的另一種方法

CORS的wiki

如何使用CORS

只要服務端在響應時發送一個響應的標頭即可

瀏覽器端還是照常使用ajax,支持get,post

在Node.js上啓用CORS

參照StackOverflow上面的一個回答,定義一箇中間件來添加響應標頭,然後在處理app.get(或post等)之前使用
(這位老兄告訴我們要善用next啊)

//CORS middleware
var allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', 'http://example.com');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');

    next();
}

//...
app.configure(function() {
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({ secret: 'cool beans' }));
    app.use(express.methodOverride());
    app.use(allowCrossDomain);
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));
});

只要把app.use(allowCrossDomain);放在處理路由之前就行

注意:Access-Control-Allow-Origin,後面如果是 * 就代表所有域名都可以跨域訪問到服務器,也可以指定具體的域名,域名一定要小寫,不然瀏覽器這邊會報錯不允許跨域
然後要指定協議名稱,http或https等

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章