【问题标题】:Helmet "crossOriginEmbedderPolicy" enable/disable for specific domains头盔 \"crossOriginEmbedderPolicy\" 启用/禁用特定域
【发布时间】:2022-08-15 17:37:19
【问题描述】:

头盔:^5.1.1
将 NextJS 与 NodeJS 一起使用。

将头盔的 crossOriginEmbedderPolicy 设置为 false 可以加载 iframe。

app.use(
  helmet({
    crossOriginEmbedderPolicy: false,
  })
);

但是可以做下面这样的事情吗?

app.use(
  helmet({
    crossOriginEmbedderPolicy: {
      //disable for specific site
    }
  })
);

以下解决方案对我不起作用:

  1. Setting Cross-origin-Embedder-Policy and Cross-origin-Opener-Policy headers in nodejs
  2. Cross-Origin-Embedder-Policy: how to allow only certain domains?
  3. https://github.com/helmetjs/helmet/issues/198

    标签: node.js


    【解决方案1】:

    我不知道你的软件架构是什么,但是如果你托管很多域,你可以在你的应用程序中引入一个配置文件,像这样:

    配置.json:

    {
      "domain1": {
          crossOrigin: true
      },
      "domain2": {
          crossOrigin: false
      },
      "domain3" : {
         crossOrigin: true
      }
    }
    

    然后在您的代码中加载配置:

    const config  = JSON.parse( fs.readFileSync( __dirname + /config.json', 'utf8' ));
    

    最后,设置值:

    const crossOrigin = config[request.headers.host].crossOrigin;
    app.use(
      helmet({
        crossOriginEmbedderPolicy: crossOrigin
      })
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-27
      • 2011-07-16
      • 1970-01-01
      • 2020-11-08
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多