在Electron中禁用同源策略(需要该策略才能使用iFrame)

在Electron中禁用同源策略(需要该策略才能使用iFrame),iframe,electron,Iframe,Electron,我会尽量简短,因为不需要代码-我在我的Electron应用程序中放置了一个iframe标记,我希望JavaScript从中检索一些信息,但由于同源策略,我不能这样做。我可以禁用它吗?注意:我是iframe中页面的所有者 var validate = document.getElementById('validate'); validate.onclick = function() { var input = document.getElementById(

我会尽量简短,因为不需要代码-我在我的Electron应用程序中放置了一个iframe标记,我希望JavaScript从中检索一些信息,但由于同源策略,我不能这样做。我可以禁用它吗?注意:我是iframe中页面的所有者

var validate = document.getElementById('validate');
        validate.onclick = function() {
            var input = document.getElementById('serial').value;
            var validator = document.createElement('iframe');
            validator.src = "http://**********.com/?wvkey=" + input;
            body.appendChild(validator);
            var status = validator.contentWindow.document.getElementById('status').innerHTML;
            if (status === "Key Status: Active") {
                window.location.assign("../dashboard/index.html");
            }
            else {
                window.location.assign("../support/keys/invalid/index.html");
            }
        }
当单击页面上的按钮时,代码应该检查iframe中值为“Key Status:Active”的文本。如果条件为true,则应将用户重定向到另一个页面。如果为false,则应将其重定向到错误页面。然而,在我的应用程序中,iframe只是出现在后台,不做任何事情-没有重定向

main.js(它的一部分):

})

编辑(更新)


由于您的问题是如何禁用电子窗口中的CORS等安全功能,因此您可以使用以下设置:

win = new BrowserWindow({
    webPreferences: {
        webSecurity: false
    }
});
不过,我只会将此作为最后手段,而希望您的网站发送适当的CORS标题

*编辑*

看过源代码后,我认为您的代码存在问题:

var validator = document.createElement('iframe');
validator.src = "http://**********.com/?wvkey=" + input;
这将把你的网站加载到
对象中,但是这是异步发生的。意味着您需要等待页面完成加载,然后才能继续:

var status = validator.contentWindow.document.getElementById('status').innerHTML;
将代码更改为以下内容:

var validator = document.createElement('iframe');
validator.onload = function() {
    var status = validator.contentWindow.document.getElementById('status').innerHTML;
    [...]
};
validator.src = "http://**********.com/?wvkey=" + input;
body.appendChild(validator);

请注意,您仍然需要webSecurity或CORS设置才能访问
验证程序
框架内容。

不起作用。我将在上面发布我的代码并解释它的行为。我在你发布源代码后更新了答案。我不敢相信这一直都是代码,我觉得很傻。。。但是我把条件句放在哪里?在那个[…]东西中?是的,你把它放在onload函数的主体中,我用[…]标记的地方仍然不起作用。我想我得和CORS一起工作。我在上面展示了新代码。
var status = validator.contentWindow.document.getElementById('status').innerHTML;
var validator = document.createElement('iframe');
validator.onload = function() {
    var status = validator.contentWindow.document.getElementById('status').innerHTML;
    [...]
};
validator.src = "http://**********.com/?wvkey=" + input;
body.appendChild(validator);