解决iframe嵌套第三方页面被拒绝

背景

很多时候,出于安全考虑,没有第三方页面的允许,我们是无法直接通过iframe去打开别人的第三方页面的,通常他们会通过在页面请求的响应头增加X-Frame-Options (去了解)和Content-Security-Policy (去了解)。

目的

可是有些时候,为了满足一些比较变态的需求,就不得不去做一些违背安全的问题,比如需要嵌套一个github.com的页面等。

现象

直接使用会是如下的场景(我这里使用了本地代理,把真实请求代理到了某音平台,其实就是相当于嵌套别人第三方页面)
在这里插入图片描述

Refused to frame 'http://localhost:3000/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors https://pc.xgo.bytedance.net https://tcs.bytedance.net https://*.douyin.com".

解决方案

  1. 如果你们所处的需求跟对方有合作,最好就是让对方给开通访问白名单,这样就可以解决,从技术角度就是
Content-Security-Policy frame-ancestors 加上自己的源地址
X-Frame-Options allow-from 加上自己的源地址
  1. 通过服务器代理来更改响应头字段,绕过浏览器的验证,这样也可以实现页面的嵌套 【不过这种不知道后续会不会被其他安全措施再次修复,目前看是还可以使用这种方案的】
    先看效果
    在这里插入图片描述

这里我的服务端使用了koa框架,直接上代码


const Koa = require('koa');
const Router = require('koa-router');
const request = require("request");
const querystring = require("querystring");
const url = require("url");const app = new Koa();
const router = new Router();/** 代理接口,用来修改响应头 */
router.get('/proxy',  (ctx) => {const originUrl = url.parse(ctx.req.url);const qs = querystring.parse(originUrl.query);const targetUrl = qs["target"];const options = {headers: {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36","cookie": `有的 网站需要检测特定的cookie key`}};// 2.代发请求return new Promise((resolve, reject) => {request(targetUrl, options, (error, response, body) => {if (error) reject(error)if (!error && response.statusCode === 200) {ctx.res.writeHead(200, { "Content-Type": "text/html" })ctx.res.end(body)resolve();} else {ctx.response.body = {status: response.statusCode,result: 'forbidden'}resolve()}});});
})app.use(router.routes());
app.use(router.allowedMethods())const port = 10101;
// 1.创建代理服务
app.listen(port);

前端主要代码

<iframe id="byte-iframe" width="100%" height="100%" src='http://localhost:10101/proxy/?target=https%3A%2F%2Fwww.douyin.com%2Fdiscover' ref={refIframe}></iframe>

后续我会继续增对这块出续集,感兴趣的可以关注一下,我也会针对这一个主题,去尝试扩展一些骚操作,目前先保密

写到最后

如果有帮到大家,记得帮博主点个赞,你们的支持是我持续更新的最大动力啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/141915.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

尚品汇-秒杀商品存入缓存、Redis发布订阅实现状态位(五十一)

目录&#xff1a; &#xff08;1&#xff09;秒杀业务分析 &#xff08;2&#xff09;搭建秒杀模块 &#xff08;3&#xff09;秒杀商品导入缓存 &#xff08;4&#xff09;redis发布与订阅实现 &#xff08;1&#xff09;秒杀业务分析 需求分析 所谓“秒杀”&#xff0…

I2C/IIC学习笔记

I2C/IIC 有些同学I2C和IIC分不清&#xff0c;I2C和IIC实际上是指同一种通信协议。I2C是Inter-Integrated Circuit的缩写&#xff0c;而IIC是它的另一种表述方式&#xff0c;代表的是同一个意思&#xff0c;即“集成电路间总线”。I2C是一种由飞利浦公司&#xff08;现恩智浦半…

【题解】【枚举】—— [USACO1.5] 回文质数 Prime Palindromes

【题解】【枚举】—— [USACO1.5] 回文质数 Prime Palindromes [USACO1.5] 回文质数 Prime Palindromes题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 思路1.素数筛法1.1.思路解析1.2.参考代码 解法1.打表1.1.思路解析1.2.AC代码 解法2.构造回文数2.1.思路解析2.2.…

Matlab Simulink 主时间步(major time step)、子时间步(minor time step)

高亮颜色说明&#xff1a;突出重点 个人觉得&#xff0c;&#xff1a;待核准个人观点是否有误 高亮颜色超链接 文章目录 对Simulink 时间步的理解Simulink 采样时间的类型Discrete Sample Times(离散采样时间)Controllable Sample Time(可控采样时间) Continuous Sample Times(…

基于springboot大学生就业招聘系统的设计与实现

大学生就业招聘系统的设计与实现 摘要 随着信息互联网信息的飞速发展&#xff0c;大学生就业成为一个难题&#xff0c;好多公司都舍不得培养人才&#xff0c;只想要一专多能之人才&#xff0c;不愿是承担社会的责任&#xff0c;针对这个问题开发一个专门适应大学生就业招聘的…

HTML+CSS - 网页布局之多列布局定位

1. 多列布局 CSS中多列布局处理文本内容&#xff0c;特别适合对于长段落或者大量文本进行自动分栏显示 类似于grid分布&#xff0c;但相较之下更加简洁明了 基本语法 <div class"container"><p>这是一些示例文本&#xff0c;当我们使用 column-count…

CGAL GIS 应用 - 从点云到DTM

CGAL GIS 应用 - 从点云到DTM GIS应用中使用的许多传感器(例如激光雷达)都会生成密集的点云。此类应用通常利用更高级的数据结构:例如&#xff0c;不规则三角网(TIN)&#xff0c;它可以作为数字高程模型(DEM)的基础&#xff0c;特别是用于生成数字地形模型(DTM)。 点云也可以通…

SOMEIP_ETS_111: SD_Empty_Entries_Array

测试目的&#xff1a; 验证DUT能够忽略声明了条目数组长度为零的SubscribeEventgroup消息。 描述 本测试用例旨在确保DUT在接收到一个Entries数组长度为零的SubscribeEventgroup消息时&#xff0c;能够正确地忽略该消息&#xff0c;不对其进行解释或响应。 测试拓扑&#x…

移动UI案例:工具类app整套案例

工具类App是指提供各种实用工具和功能的手机应用程序。这些工具可以包括但不限于日历、闹钟、备忘录、翻译、计算器、单位转换、天气预报、地图导航、音乐播放器、相机、视频编辑等。这些工具类App能够帮助用户解决日常生活和工作中的各种问题&#xff0c;提高效率和便利性。 …

基于是springboot小区物业管理系统

小区物业管理系统 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于小区物业管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了小区物业管理系统&#x…

Redis的存储原理和数据模型

一、Redis是单线程还是多线程呢&#xff1f; 我们通过跑redis的代码&#xff0c;查看运行的程序可以得知&#xff0c;Redis本身其实是个多线程&#xff0c;其中包括redis-server&#xff0c;bio_close_file&#xff0c;bio_aof_fsync&#xff0c;bio_lazy_free&#xff0c;io_t…

猫头虎分享:Python库 SQLAlchemy 的简介、安装、用法详解入门教程

&#x1f42f; 猫头虎分享&#xff1a;Python库 SQLAlchemy 的简介、安装、用法详解入门教程 大家好&#xff0c;我是猫头虎&#xff01;今天有粉丝问猫哥&#xff1a;“在项目开发中如何高效地进行数据库操作&#xff1f;是否有一个灵活又强大的ORM库推荐&#xff1f;”正好&…

[Linux] 进程优先级 进程的调度与切换 环境变量详解

进程优先级 && 进程的调度与切换 && 环境变量 1.进程优先级1.1查看进程1.2 PRI VS NI1.3用指令调整优先级 2.进程的调度与切换2.1 进程切换2.2 linux实现进程调度的算法 3.环境变量前言引入&#xff08;main参数--命令行参数&#xff09;3.1 环境变量3.2 PATH环…

题目:单调栈

1、关于栈的概述 栈是一种数据结构&#xff0c;遵循“后进先出”&#xff08;LIFO, Last In, First Out&#xff09;的原则。这意味着最后被插入栈中的元素会最先被移除。可以把它想象成一个垒盘子的情况&#xff0c;新的盘子总是放在最上面&#xff0c;而最上面的盘子会最先被…

4------维修手机工具 解锁 刷机 保资料修复 修改参数等多工具合集 工具预览与操作解析

此款工具可能很多维修技术都使用过。早期知名手机维修加密狗。目前已经修改为可以任何人使用。此工具集合了多个版本以及加密狗工具。所谓的这些手机维修仪器工具。只是把很多工具直接整合到他里面。然后按需运行。其实查看解压后的文件会在其中找到有些小工具集合。类似基带修…

英文翻译无忧:2024年四大翻译工具推荐!

在全球化时代&#xff0c;英语已成为国际交流的重要语言。对于许多英语非母语的伙伴来说&#xff0c;一款好用的英文翻译工具至关重要。今天&#xff0c;小编为大家盘点几款实用的英文翻译工具&#xff01; 福昕在线翻译 直达链接&#xff1a;fanyi.pdf365.cn/ 福昕在线翻译…

基于51单片机的220V交流数字电流表proteus仿真

地址&#xff1a;https://pan.baidu.com/s/1QmpPLvDTuW7QG7P-JCLPPg 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectron…

vulkano (rust) 画一个三角形 (vulkan 渲染窗口初始化 (Linux) 下篇)

上文说到, vulkan 相比 OpenGL (ES), 更加贴近底层硬件, 许多东西需要应用软件手动管理, 所以 vulkan 的初始化过程比较麻烦, 或者说学习曲线比较陡峭. 但是, 这种麻烦是一次性的, 一旦学会了, 就能开始享受 vulkan 的诸多好处啦 ~ 本文以绘制一个三角形为例, 介绍 vulkan 的初…

DBA运维小技巧之存储篇-Oracle服务器根目录满了怎么处理(2)迁移至新存储空间

1 前情提要 话说上次DBA小倩通过删除home lv&#xff0c;把空间扩给了/分区&#xff0c;问题暂时得到了解决。 没过几天&#xff0c;领导找到小倩下达任务&#xff0c;客户说数据库在本地磁盘空间太小了又快要满了&#xff0c;由于之前用的服务器本地磁盘&#xff0c;性能也比…

信息安全工程师(5)域名与域名解析

一、域名 1. 定义与功能 域名&#xff08;Domain Name&#xff09;是互联网上用于标识网站或服务器地址的名称&#xff0c;由一串由点分隔的字符组成&#xff0c;如“example.com”。域名的主要功能是提供一种便于记忆和输入的地址形式&#xff0c;以代替难以记忆的IP地址。域名…