如何在express.js node.js中设置X-Frame-Options

Har*_*dha 6 javascript embed iframe node.js express

我有一些静态资产,我想在几个桌面/移动网络客户端的iframe中提供服务.

现在,如何将特定的一组来源列入白名单以允许设置X-Frame-Options标头,以便可以将资源作为iframe嵌入到不同的桌面/移动Web客户端中.并且对于所有其他来源,拒绝访问此资源.

经过一番挖掘,我开始用 -

const app = express();

var allowCrossDomain = function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, Authorization');
    if (req.method === "OPTIONS") res.send(200);
    else next();
}
app.use(allowCrossDomain);
Run Code Online (Sandbox Code Playgroud)

现在,我在这里如何设置带有白名单原点值的X-Frame-Options标题 -

小智 7

你应该导入头盔并使用frameguard来获得一些白色的起源.有关此主题的更多信息:MDN X-FRAME-OPTIONS 最佳实践安全性

  • 根据 MDN 的说法,“x-Frame-Options”在现代浏览器中已过时,最好避免使用它:https://helmetjs.github.io/docs/frameguard/(阅读“allow from”部分) (2认同)

Edw*_*kwu 6

你只需要头盔

npm install helmet --save 

const express = require('express')
const helmet = require('helmet')

const app = express()

app.use(helmet.frameguard())
Run Code Online (Sandbox Code Playgroud)

  • 如果我只添加 app.use(helmet()) 可以吗?我使用头盔版本 3.21.3 (2认同)