React中设置X-Frame-Options无效怎么办?

Top丶雨萱 阅读 28

我在React项目里用iframe嵌套了第三方登录页面,结果被安全工具提示存在点击劫持风险。查资料说要设置X-Frame-Options头,但我这样写到组件里没效果:


function AuthPage() {
  // 尝试在这里设置响应头
  response.setHeader('X-Frame-Options', 'SAMEORIGIN');
  return (
    <iframe 
      src="https://third-party-login.com" 
      sandbox="allow-same-origin"
    />
  );
}

控制台却报错说response未定义,难道React里不能这样设置响应头?应该用什么正确方法配置X-Frame-Options防止点击劫持?

我来解答 赞 7 收藏
二维码
手机扫码查看
2 条解答
Air-钧溢
React前端代码里没法直接设置HTTP响应头,得在服务端处理。如果你用的是Express,加这么一行代码搞定:

app.use((req, res, next) => {
res.setHeader('X-Frame-Options', 'SAMEORIGIN');
next();
});


另外现代做法推荐用Content-Security-Policy,安全性更高:

app.use((req, res, next) => {
res.setHeader('Content-Security-Policy', "frame-ancestors 'self'");
next();
});
点赞 1
2026-02-15 04:02
Zz玉娅
Zz玉娅 Lv1
你这个写法确实有问题,response.setHeader 这种东西是后端的玩儿法,React 是前端框架,它根本不知道什么响应头不响应头。咱们得从头理清楚怎么正确设置 X-Frame-Options

### 先说原理
X-Frame-Options 是一个 HTTP 响应头,用来控制当前页面是否能被嵌套在