首页 > 解决方案 > 禁用浏览器网络安全后,CORS 仍然有效

问题描述

所以我一直在测试一个使用 Selenium 的网站,特别是一个嵌入了 iframe 的信用卡表单的页面。我想访问所述 iframe 的内容,但由于 CORS,我收到错误消息:

Uncaught DOMException: Blocked a frame with origin "<url>" from accessing a cross-origin frame.

我做了一个快速的谷歌搜索,并意识到你可以使用“--disable-web-security”标志绕过 CORS,所以我的代码现在如下所示:

options = webdriver.ChromeOptions()
options.add_argument("--disable-web-security")
self.driver = webdriver.Chrome(os.getenv("CHROME_DRIVER"), options=options)

令人惊讶的是,CORS 异常不断出现,我目前正纠结于如何从这里开始。我确实必须访问 iframe 的内容,对此没有解决方法。

由于我对为什么这不起作用感到困惑,我将问题复制到另一个网站,在本例中为Amazon,它的功能类似(嵌入在 iframe 中的信用卡表格)。我在启用网络安全的情况下运行了代码,并得到了与预期相同的 CORS 错误。但是,正如前面提到的那样,我禁用了网络安全,并且它起作用了!我现在可以访问 iframe。

我还从当前最稳定的 (88) 降级到旧版本的 Chrome (86) 并且没有再发生任何事情。我正在使用 Ubuntu 20.04。

所以现在我想知道 - 为什么该标志不适用于我提到的第一个场景?第一个网站是否有可能强制浏览器的网络安全或相关的东西?我不是网络开发方面的专家,因此对此的任何意见都是有价值的。

标签: google-chromeiframeselenium-chromedrivercross-domain

解决方案


事实证明,我所需要的只是添加--disable-site-isolation-trials一个非空的--user-data-dir以及--disable-web-securityhere所述


推荐阅读