zoukankan      html  css  js  c++  java
  • 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">

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

    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();
    
        }
    }
  • 相关阅读:
    java文件分片上传,断点续传
    java-webuploader+Java如何实现分片+断点续传
    JAVA支持HTTP断点续传
    用Java 实现断点续传 (HTTP)
    java实现视频断点上传文件
    关于java实现断点续传的上传下载功能问题
    java文件断点续传的简单实现
    java实现文件的断点续传
    java HTTP文件断点上传
    怎样用Google APIs和Google的应用系统进行集成(5)----怎样把Google Tasks的JSON Schema转换成XML的Schema(XSD)?
  • 原文地址:https://www.cnblogs.com/zccst/p/8000486.html
Copyright © 2011-2022 走看看