这是关于采取策略并解决我对自己的想法的怀疑的问题。
我想要的是允许CORS请求,即。 Access-Control-Allow-Origin取决于我拥有的环境类型。这是我的cors标头:
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();
});
这是好习惯吗?还有另一种方法吗?另外,我不想允许每个站点都使用*,而是希望选择要允许的站点。
答案 0 :(得分:0)
使用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