解决跨域问题
2024-05-16 14:56:59
应用场景:
当我们在主窗口操作iframe的时候
// 遍历所有的iframe元素 document.querySelectorAll("iframe").forEach(function(iframe) { // 获取iframe的文档对象 var iframeDocument = iframe.contentDocument || iframe.contentWindow.document; // 检查文档对象是否存在 if (iframeDocument) { // 获取iframe的源代码 var iframeHTML = iframeDocument.documentElement.outerHTML; console.log(iframeHTML); // 输出iframe的源代码 } });
报错信息:
Uncaught DOMException: Blocked a frame with origin "http://www.xx519.com" from accessing a cross-origin frame.
这个错误表示你正在试图从一个源(Origin)为 "http://www.xx519.com" 的框架中访问另一个跨源(Cross-Origin)的框架,而浏览器出于安全考虑阻止了这种操作。
同源策略是浏览器的一种安全机制,限制了一个页面的脚本只能访问与其来源相同的资源。这意味着如果你的页面加载了来自不同源的iframe,你无法直接从父页面中访问iframe内部的内容,包括其源代码。
如果你确实需要访问跨源iframe中的内容,你需要确保该iframe的服务器允许跨域访问,或者通过其他方法与该iframe进行通信,比如使用postMessage API进行跨文档消息传递。
解决办法:
app.SetDisableWebSecurity(true) //禁用安全策略允许跨域 app.SetDisableSiteIsolationTrials(true) //禁用独立站点安全 cef109