什麼是CORS
CORS(Cross-origin resource sharing),跨域資源共享,是一份瀏覽器技術的規範,用來避開瀏覽器的同源策略
簡單來說就是解決跨域問題的除了jsonp外的另一種方法
如何使用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等