• 解决跨域问题
  • 应用场景:


    当我们在主窗口操作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