X-Frame-Options是什么?
错误:
Refused to display 'http://xx.com/spot/kline.do' in a frame because it set 'X-Frame-Options' to 'deny'.
X-Frame-Options是什么?
X-Frame-Options是一个HTTP标头(header),用来告诉浏览器这个网页是否可以放在iFrame内。例如:·
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
X-Frame-Options: ALLOW-FROM http://caibaojian.com/
第一个例子告诉浏览器不要(DENY)把这个网页放在iFrame内,通常的目的就是要帮助用户对抗点击劫持。
第二个例子告诉浏览器只有当架设iFrame的网站与发出X-Frame-Options的网站相同,才能显示发出X-Frame-Options网页的内容。
第三个例子告诉浏览器这个网页只能放在http://caibaojian.com//网页架设的iFrame内。
不指定X-Frame-Options的网页等同表示它可以放在任何iFrame内。
X-Frame-Options可以保障你的网页不会被放在恶意网站设定的iFrame内,令用户成为点击劫持的受害人。
另外查了最新的资料,还可以直接通过meta标签来设置,不需要放在http头部请求中了。
<
meta
http-equiv
=
"X-Frame-Options"
content
=
"deny"
>
两个参数:(作用与上面一致)
- SAMEORIGIN
- DENY
X-Frame-Options 有三个值:
DENY
- 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN
- 表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri
- 表示该页面可以在指定来源的 frame 中展示。
换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为
SAMEORIGIN
,那么页面就可以在同域名页面的 frame 中嵌套。
配置 Apache
配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 'site' 的配置中:
Header always append X-Frame-Options SAMEORIGIN
配置 nginx
配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options
SAMEORIGIN;
配置 IIS
配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
对于spring boot来说,WebSecurityConfig.java
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, jsr250Enabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override
public void configure(final WebSecurity web) throws Exception {
} @Override
protected void configure(final HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
.anyRequest().permitAll().and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
.headers().frameOptions().sameOrigin(); }
}
最新文章
- ijkplayer demo效果图
- 你真的理解Java的按引用传递吗?
- DBConfigReader.java
- 聚合数据天气预报API-ajax 通过城市名取数据
- magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
- linux出现bash: ./java: cannot execute binary file 问题的解决办法
- android 数据存储的四种方式.
- ListView.setOnItemClickListener无效
- Mockito文档-单元测试技术
- c++爱问的面试问题
- OSGI.NET,请求因HTTP状态404 失败:Not Found
- mysqldumpslow的使用简介
- [Oracle]undo表空间使用量为100%
- 谈谈.NET架构师面试及如何设计面试题
- Session &;cookie introduction,usage
- C# receive 接收的字符串 对比不相等的问题
- JavaWeb基础-servlet
- Matlab使用技巧
- ipconfig/all参数解析
- windows 激活venv问题