在进行以下操作之前,请确保已完成之前文章中提到的 源码拉取及编译 部分。
如果已顺利完成相关配置,即可继续执行后续操作。
同源策略限制了不同源(协议、域名、端口)的网页脚本访问彼此的资源。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
