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();
});

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

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

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

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

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();
});

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

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

兼容性
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容