gpt4 book ai didi

javascript - Express.js 中的条件 CORS 访问控制允许来源

转载 作者:行者123 更新时间:2023-11-30 06:19:32 29 4
gpt4 key购买 nike

这是一个关于采取策略和解决我对我的想法的疑虑的问题。

我想要的是允许 CORS 请求,即。 Access-Control-Allow-Origin 取决于我拥有的环境类型。所以这是我的 cors header :

app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'https://siteone.com');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization, access-control-allow-origin');
next();
});

但我想要的是这样的条件逻辑:

const ACAOSite = process.env.NODE_ENV == 'production' ? 'https://siteone.com' : 'https://sitetwo.com';

app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', ACAOSite);
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization, access-control-allow-origin');
next();
});

不过这是好的做法吗?还有另一种方法吗?另外,我不想允许每个站点都使用 *,我想选择要允许的站点。

最佳答案

使用dotenv或配置文件来设置您允许的来源。

与从 .env(使用 dotenv)或可在服务器上修改的配置文件读取的测试/生产数据库凭据的不同配置相同。

例如,如果您的 .env 文件包含:

allowed_origins=https://siteone.com

那么你的代码应该是这样的:

app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', process.env.allowed_origins);
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization, access-control-allow-origin');
next();
});

您还可以使用多个来源逗号分隔,例如

allowed_origins=https://siteone.com, https://siteone-server2.com

关于javascript - Express.js 中的条件 CORS 访问控制允许来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54019064/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com