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.

文章来源:刘俊涛的博客


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

相关推荐
hhcgchpspk10 分钟前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
vipxieliang15 分钟前
Python collections:高效容器与实战案例
后端·python
驭渊的小故事29 分钟前
Spring AOP 核心概念与通知类型详解
java·后端·spring
vipxieliang30 分钟前
ValidX vs 手写验证代码:开发效率对比实测
java·spring boot·后端
vipxieliang41 分钟前
Go GC 性能优化实践:从 GOGC、GOMEMLIMIT 到分配优化
后端·go
海豚调度1 小时前
Apache DolphinScheduler 2026 年 10 月社区贡献总结报告
后端
vipxieliang1 小时前
ThinkORM 3.0 入门:强类型模型定义与查询构造器
后端·php·thinkphp
vipxieliang1 小时前
虚拟线程与 GraalVM:Spring Boot 3.x 云原生性能跃迁
java·spring boot·后端
Rain的Java大神之路1 小时前
面试官最烦的答案:“我用 Redis + Token”!接口幂等 8 种方案 + 四层防御,把重复扣款工单干到 0
java·后端·面试
vipxieliang1 小时前
PHP 密码哈希与 password_hash 最佳实践
后端·php