node.js - 动态允许 CORS 域

标签 node.js cors

我正在运行 Node 应用程序,其中包含 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);
    };

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

最佳答案

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

关于node.js - 动态允许 CORS 域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59635487/

相关文章:

javascript - 如何捕获 Node mySQL 查询中的错误?

node.js - Sequelize - 支持的最高 PostgreSQL 版本

angular - .NET 核心 2.0 Angular 5 : Allowing Cors

safari - Safari 是否支持 Access-Control-Expose-Headers header ?

javascript - 对 cors 和 fetch 以及何时发出选项请求感到非常困惑

javascript - 如何避免网络音频 api 的 CORS 限制?

javascript - Promise.all 回滚成功的 promise 失败时的操作

node.js - 使用 Node.JS 使用来自 Apple 的 .p8 文件签署 JWT

node.js - 在 Windows Azure 上托管 Nodejs Express 站点

javascript - 当我将 instagram API 与 angularjs 一起使用时,CORS 错误