文档手册

解决跨域问题

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