【问题标题】:CORS still working after disabling browser web security禁用浏览器网络安全后,CORS 仍然有效
【发布时间】:2021-05-08 20:34:11
【问题描述】:

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

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

我在 Google 上进行了快速搜索,发现您可以使用“--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-chrome iframe selenium-chromedriver cross-domain


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-20
      • 2011-11-09
      • 1970-01-01
      • 2016-01-11
      • 2010-11-05
      • 2019-06-19
      • 1970-01-01
      • 2016-01-05
      相关资源
      最近更新 更多