HTTP 响应头 X-Frame-Options

简介

X-Frame-Options HTTP 响应头用来给浏览器一个指示。该指示的作用为:是否允许页面在 <frame>, </iframe> 或者 <object> 中展现。

网站可以使用此功能,来确保自己网站的内容没有被嵌套到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。

重点1:当访问网页浏览器支持 X-Frame-Options 时,有效。

重点2:Content-Security-Policy (CSP) HTTP 响应头有一个名为 frame-ancestors 的指令,有相同的作用。支持CSP frame-ancestors 指令的浏览器已经废弃了 X-Frame-Options 响应头。

语法

复制代码
X-Frame-Options: DENY

复制代码
X-Frame-Options: SAMEORIGIN

检查 X-Frame-Options 是否已生效

以Google浏览器为例,打开网站按F12键,选择Network,找到对应的Headers,如下图所示

测试 X-Frame-Options 是否已生效

https://clickjacker.io/

Nginx 配置 X-Frame-Options

配置 Nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:

复制代码
add_header X-Frame-Options SAMEORIGIN always;

了解 Nginx 的 add_header 指令入口

spring boot 配置 X-Frame-Options

启用 X-Frame-Options

支持SAMEORIGIN的设置方式:

java 复制代码
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends DefaultWebSecurityConfigurer {
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
        http.headers().frameOptions().sameOrigin();
 
    }
}

禁用 X-Frame-Options

java 复制代码
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends DefaultWebSecurityConfigurer {
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
        http.headers().frameOptions().disable();
    }
}

参考

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Frame-Options

https://blog.csdn.net/zzhongcy/article/details/124609116

https://blog.csdn.net/u014704612/article/details/115633050

相关推荐
ADRU1 小时前
SSE 到底是什么?它和 HTTP 有什么关系?Java/Spring 怎么实现流式输出(可直接上手)
java·spring·http
.select.2 小时前
HTTPS ECDHE 握手解析
网络协议·http·https
wechatbot8882 小时前
【企业微信】基于HTTP协议的API接口设计:实现账号登录回调的自动化管理
java·http·自动化·企业微信·ipad
西红市杰出青年3 小时前
AI 调用 MCP 的全流程教程(基于 Streamable HTTP)
人工智能·网络协议·http
摇滚侠3 小时前
基于 HttpClient 封装的 HTTP 请求工具类
网络·网络协议·http
Trouvaille ~3 小时前
【项目篇】从零手写高并发服务器(九):HTTP协议支持——从TCP到应用层
linux·服务器·c++·tcp/ip·http·高并发·应用层
lay_liu1 天前
报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)
http·servlet·tomcat
蓝色心灵-海1 天前
小律书 技术架构详解:前后端分离的自律管理系统设计
java·http·小程序·架构·uni-app
cyforkk1 天前
细节决定架构的成败:API 限流与 HTTP 429 状态码的优雅落地
网络协议·http·架构
Byte不洛1 天前
基于 C++ 手写 HTTP 服务器:从请求解析到响应构建全流程解析
linux·网络·c++·计算机网络·http