Access-Control-Allow-Origin 跨域設置多域名


在HTML5中有一種新的跨域方式,即設置“Access-Control-Allow-Origin”可以指定允許跨域訪問的域名。
Node.js中可以這樣寫

app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", 'https://www.google.com'); res.header('Access-Control-Allow-Methods', 'POST, GET'); res.header('Access-Control-Allow-Headers', 'X-Requested-With'); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); }); 

但在實際使用中,可能需要設置多個域名。
在網上查詢資料,有一種寫法

Access-Control-Allow-Origin: https://www.google.com,https://www.baidu.com 

改成相應的代碼,但是始終提示問題,只允許一個值。

於是換種方式,查資料發現,許多是先自己判斷域名是否是允許的,如果是再設置允許跨域訪問。那么代碼應該改成如下形式

app.all('*', function(req, res, next) { if( req.headers.origin == 'https://www.google.com' || req.headers.origin == 'https://www.baidu.com' ){ res.header("Access-Control-Allow-Origin", req.headers.origin); res.header('Access-Control-Allow-Methods', 'POST, GET'); res.header('Access-Control-Allow-Headers', 'X-Requested-With'); res.header('Access-Control-Allow-Headers', 'Content-Type'); } next(); }); 

使用時可以把允許訪問的域名寫成一個數組,然后JS寫一個比較字符串是否在數組內的函數,這樣使用就比較方便了。

其中,Access-Control-Allow-Origin就是我們需要設置的域名,Access-Control-Allow-Methods是允許的請求方式,Access-Control-Allow-Headers跨域允許包含的頭。

 
兼容性


作者:LnEoi
鏈接:https://www.jianshu.com/p/b587dd1b7086
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM