because it set 'X-Frame-Options' to 'sameorigin'

报错 because it set 'X-Frame-Options' to 'sameorigin'.

bash 复制代码
Refused to display 'https://xxx.xxx.cn/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

解决方法:

修改页面,增加meta配置

html 复制代码
<head>
     <!-- CSP 设置 -->
     <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://yourdomain.com;">
     <!-- 其他头部信息 -->
   </head>

原理

在网页开发中,当你尝试在一个iframe标签内嵌入一个设置了X-Frame-Options响应头为sameorigin的页面时,浏览器会阻止该页面在不同源的iframe中加载。这是因为X-Frame-Options是用于防止点击劫持(clickjacking)攻击的安全策略,它告诉浏览器该页面只能在同源(即协议、域名和端口号都相同)的页面中以iframe的形式展示。

解决方式:

  1. 更改目标页面设置 :如果你对被嵌入的Java页面具有控制权,你可以考虑修改服务器端的响应头配置,移除或更改X-Frame-Options为允许跨域。例如,可以将其设置为ALLOW-FROM <指定源>,但请注意,这个选项在现代浏览器中已经不被推荐使用,并且不是所有浏览器都支持

    http 复制代码
    X-Frame-Options: ALLOW-FROM https://your-allowed-origin.com
  2. 使用其他安全策略 :若你依然需要保持一定的安全性,可以考虑采用更现代的Content Security Policy(CSP)中的frame-ancestors指令来替代X-Frame-Options,并指定允许嵌入的源。

    http 复制代码
    Content-Security-Policy: frame-ancestors 'self' https://your-allowed-origin.com;

修改HTTP头部或Meta标签

Content-Security-Policy (CSP) 是一种通过HTTP头部或Meta标签在网页中设置的安全策略,用于控制浏览器允许加载哪些资源。具体添加位置如下:

  1. HTTP Header: 在服务器端配置,将CSP规则添加到HTTP响应头中,例如在Apache、Nginx等Web服务器的配置文件里,或者在应用程序(如Node.js、PHP、Java Servlets等)中设置响应头。以下是一个在HTTP响应头中设置CSP的例子:

    http 复制代码
    Content-Security-Policy: default-src 'self'; script-src 'self' https://trustedscripts.com; style-src 'self' https://stylesheets.com; img-src 'self' data:; object-src 'none'; base-uri 'self';
  2. HTML Meta 标签: 当无法通过服务器端设置时,可以在HTML文档部分使用标签来定义CSP。注意,这种方式支持的功能可能不如HTTP头部方式全面,并且某些现代浏览器可能不再支持通过meta标签设置某些CSP指令。

    html 复制代码
    <head>
      <!-- CSP 设置 -->
      <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://trustedscripts.com;">
      <!-- 其他头部信息 -->
    </head>

选择哪种方式取决于你的应用架构和部署环境,通常推荐优先考虑通过HTTP头部来设置CSP以获得最佳兼容性和安全性效果。

欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

Don't reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(^_^)

相关推荐
gjxDaniel14 分钟前
Go编程语言入门与常见问题
开发语言·后端·go
sunnyday04262 小时前
Spring Boot 自定义 Starter 实战:从创建到使用的完整指南
spring boot·后端·mybatis
想用offer打牌3 小时前
2025年总结:一个树苗倔强生长
java·后端·开源·go
小北方城市网3 小时前
Redis 分布式锁与缓存三大问题解决方案
spring boot·redis·分布式·后端·缓存·wpf·mybatis
哪里不会点哪里.3 小时前
Spring 核心原理解析:它到底解决了什么问题?
java·后端·spring
小杍随笔3 小时前
【Rust Cargo 目录迁移到 D 盘:不改变安装路径和环境变量的终极方案】
开发语言·后端·rust
沐雨风栉4 小时前
用 Kavita+cpolar 把数字书房装进口袋
服务器·开发语言·数据库·后端·golang
郑州光合科技余经理5 小时前
同城020系统架构实战:中台化设计与部署
java·大数据·开发语言·后端·系统架构·uni-app·php
Mr -老鬼6 小时前
UpdateEC - EasyClick 项目热更新系统(Rust构建)
开发语言·后端·rust
一 乐6 小时前
学生宿舍管理|基于springboot + vue学生宿舍管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·助农电商系统