错误:

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">

两个参数:(作用与上面一致)

  1. SAMEORIGIN
  2. 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(); }
}

最新文章

  1. ijkplayer demo效果图
  2. 你真的理解Java的按引用传递吗?
  3. DBConfigReader.java
  4. 聚合数据天气预报API-ajax 通过城市名取数据
  5. magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
  6. linux出现bash: ./java: cannot execute binary file 问题的解决办法
  7. android 数据存储的四种方式.
  8. ListView.setOnItemClickListener无效
  9. Mockito文档-单元测试技术
  10. c++爱问的面试问题
  11. OSGI.NET,请求因HTTP状态404 失败:Not Found
  12. mysqldumpslow的使用简介
  13. [Oracle]undo表空间使用量为100%
  14. 谈谈.NET架构师面试及如何设计面试题
  15. Session &amp;cookie introduction,usage
  16. C# receive 接收的字符串 对比不相等的问题
  17. JavaWeb基础-servlet
  18. Matlab使用技巧
  19. ipconfig/all参数解析
  20. windows 激活venv问题

热门文章

  1. eclipse 上使用tomcat 启动项目,项目目录下无.class 文件
  2. GitLab-Runner 安装配置
  3. VUE的组件DEMO
  4. 进程管理—进程描述符(task_struct)
  5. 【洛谷4717】【模板】快速沃尔什变换(FWT模板)
  6. Linux 初学者:移动文件
  7. 2017.11.17 C++系列---用malloc动态给c++二维数组的申请与释放操作
  8. Ubuntu搜狗输入法无法输入中文等问题
  9. ROS根据访问不同的网址,走不同的路由策略的脚本
  10. BOM编程