【问题标题】:Dynamically allow domains for CORS动态允许域用于 CORS
【发布时间】:2020-01-08 04:24:54
【问题描述】:

我在 nginx 下运行带有白名单前端域列表的节点应用程序。允许的域在 .env 文件中定义。

app.js:

app.use(cors());

cors.js:

const cors = require('cors');

const whitelist = process.env.CORS_DOMAINS.split(',');

module.exports = (enabled = true) =>
    (req, res, next) => {
        const options = {
            origin(origin, callback) {
                if (!origin) {
                    callback(null, true);
                    return;
                }
                const originIsWhitelisted = enabled ? whitelist.indexOf(origin) !== -1 : true;
                if (originIsWhitelisted) {
                    console.log('cors runs');
                    callback(null, originIsWhitelisted);
                    return;
                }
                callback({
                    statusCode: 401,
                    error: 'Not allowed',
                });
            },
        };
        return cors(options)(req, res, next);
    };

当应用程序已在运行时,如何更新列入白名单的域? 我在数据库中有域列表,但由于性能原因不想每次都查找。

【问题讨论】:

    标签: node.js cors


    【解决方案1】:

    您可以使用express dynamic middleware 并在运行时使用它 数据库表上的触发器。

    【讨论】:

    • 感谢这个想法,我发现它实现起来太繁重了,所以我宁愿在应用程序启动时从数据库中加载域,然后在应用程序使用新域更新数据库时通过事件更新全局变量。跨度>
    猜你喜欢
    • 2018-06-26
    • 2023-03-04
    • 2017-07-16
    • 2015-01-24
    • 2015-01-15
    • 2019-10-27
    • 1970-01-01
    • 2020-07-02
    • 2018-02-22
    相关资源
    最近更新 更多