跨域问题:it set 'X-Frame-Options' to 'sameorigin'

跨域问题:it set 'X-Frame-Options' to 'sameorigin'

精选文章moguli202025-01-05 16:06:2722A+A-

最近在一个项目中,使用<iframe>标签引用另一个项目站点的页面时,提示"Refused to display 'http://localhost:8090/' in a frame because it set 'X-Frame-Options' to 'sameorigin'."。这是引用资源X-Frame-Options响应头配置导致的。

SAMEORIGIN

X-Frame-Options

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>,</iframe> 或者 <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到别人的网站中去,也从而避免了点击劫持 (ClickJacking) 的攻击。

一般有三个参数:

  1. DENY:表示该页面不允许在frame中展示,即便是在相同域名的页面中嵌套也不允许;
  2. SAMEORIGIN:表示该页面可以在相同域名页面的frame中展示;
  3. ALLOW-FROM uri:表示该页面可以在指定来源的frame中展示。

Tomcat配置X-Frame-Options

在tomcat的conf/web.xml中加入以下配置:

    <filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <init-param>
            <param-name>antiClickJackingEnabled</param-name>
            <param-value>true</param-value>
        </init-param>
		<init-param>
            <param-name>antiClickJackingOption</param-name>
            <param-value>SAMEORIGIN</param-value>
        </init-param>
        <init-param>
            <param-name>blockContentTypeSniffingEnabled</param-name>
            <param-value>false</param-value>
        </init-param>
        <async-supported>true</async-supported>
    </filter>
    <filter-mapping>
        <filter-name>httpHeaderSecurity</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

若允许跨域访问,需要修改antiClickJackingOption值:

   <init-param>
            <param-name>antiClickJackingOption</param-name>
            <param-value>ALLOW-FROM</param-value>
        </init-param>
		<init-param>
			<param-name>antiClickJackingUri</param-name>
			<param-value>*</param-value>
    </init-param>

ALLOW-FROM

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2