查看: 72|回覆: 0

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

[複製鏈接]

3

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2010-1-7
發表於 2021-10-24 21:18:00 | 顯示全部樓層 |閲讀模式

在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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部