魔改chromium源码——解除 iframe 的同源策略

在进行以下操作之前,请确保已完成之前文章中提到的 源码拉取及编译 部分。

如果已顺利完成相关配置,即可继续执行后续操作。


同源策略限制了不同源(协议、域名、端口)的网页脚本访问彼此的资源。iframe 的跨域限制由 Blink 渲染引擎和 Chromium 的安全层共同实现。

咱们直接一步到位,全局禁用同源策略。

这是我们的测试代码:

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0">
    <title>Document</title>
</head>

<body>
    <iframe id="iframe" src="https://mirrors.tuna.tsinghua.edu.cn/help/pypi/" style="width: 100vw;height: 100vh;" frameborder="0"></iframe>

    <script>
        const iframe = document.getElementById('iframe');
        iframe.onload = function () {
            console.log('iframe 已加载完成');
            try {
                const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
                console.log('iframe 内容:', iframeDocument.body.innerHTML);
                // 在这里可以安全地操作 iframe 的 DOM
            } catch (error) {
                console.error('无法访问 iframe 内容(可能是跨域):', error);
            }
        };
    </script>
</body>

</html>

如果是正常的浏览器,我们在访问跨域资源的时候会提示如下:

我们通过修改源码之后,现在就可以获取到跨域URL内的资源

修改的位置在这里

third_party/blink/renderer/platform/weborigin/security_origin.cc

目标函数:SecurityOrigin::CanAccess

将这个函数直接返回true就可以了

然后运行以下代码完成编译

bash 复制代码
autoninja -C out/Default chrome

在启动编译后的chromium程序时,必须添加下面启动参数,否则会不生效

bash 复制代码
--disable-site-isolation-trials
相关推荐
F2E_Zhangmo27 分钟前
基于cornerstone3D的dicom影像浏览器 第二章 加载本地文件夹中的dicom文件并归档
前端·javascript·css
用户214118326360243 分钟前
Nano Banana免费方案来了!Docker 一键部署 + 魔搭即开即用,小白也能玩转 AI 图像编辑
前端
豌豆花下猫1 小时前
Python 潮流周刊#118:Python 异步为何不够流行?(摘要)
后端·python·ai
Zacks_xdc1 小时前
【前端】使用Vercel部署前端项目,api转发到后端服务器
运维·服务器·前端·安全·react.js
给月亮点灯|1 小时前
Vue基础知识-脚手架开发-使用Axios发送异步请求+代理服务器解决前后端分离项目的跨域问题
前端·javascript·vue.js
秋难降2 小时前
SQL 索引突然 “罢工”?快来看看为什么
数据库·后端·sql
张迅之2 小时前
【React】Ant Design 5.x 实现tabs圆角及反圆角效果
前端·react.js·ant-design
Access开发易登软件3 小时前
Access开发导出PDF的N种姿势,你get了吗?
后端·低代码·pdf·excel·vba·access·access开发
蔗理苦3 小时前
2025-09-05 CSS3——盒子模型
前端·css·css3
中国胖子风清扬3 小时前
Rust 序列化技术全解析:从基础到实战
开发语言·c++·spring boot·vscode·后端·中间件·rust