Chrome Cypress引发安全错误

knpiaxh1  于 2022-12-06  发布在  Go
关注(0)|答案(7)|浏览(228)

我目前正在运行Chrome 74,并试图使用Cypress测试我的应用程序中的一个风格指南。当我加载Cypress时,它抛出了以下错误:
安全性错误:已阻止源为“http://localhost:3000”的帧访问跨源帧。
请让我知道是否有解决办法!
我曾试图跟随这一点:https://github.com/cypress-io/cypress/issues/1951
英译汉但是什么都没有改变/对我来说什么都没有起作用
我的代码如下所示:cypress/plugins/index.js

module.exports = (on, config) => {
    on('before:browser:launch', (browser = {}, args) => {
        // browser will look something like this
        // {
        //   name: 'chrome',
        //   displayName: 'Chrome',
        //   version: '63.0.3239.108',
        //   path: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
        //   majorVersion: '63'
        // }

        if (browser.name === 'chrome') {
            args.push('--disable-site-isolation-trials');

            return args
        }

        if (browser.name === 'electron') {
            args['fullscreen'] = true

            // whatever you return here becomes the new args
            return args
        }
    })
}

在我的cypress/support/index.js
这将在我运行每个测试之前加载站点,以保存在每个测试中编写cy.visit。

beforeEach(() =>{
    cy.visit('http://localhost:3000/style-guide')
})
nbewdwxp

nbewdwxp1#

我昨天遇到了同样的问题,你在问题中提到的cypress issue #1951中的 @jsjoeio 的答案实际上帮助了我。
所以我做的唯一一件事就是修改我的cypress.json并添加以下值:

{
  "chromeWebSecurity": false
}
2q5ifsrm

2q5ifsrm2#

您可以禁用安全性来解决此问题。
1.转到cypress.json文件。
1.写入{ "chromeWebSecurity": false }并保存。
1.再次运行测试。

ktca8awb

ktca8awb3#

我遇到了完全相同的问题,我建议你按照DurkoMatko的建议去做。文档chromeWebSecurity
但是我在iframe中遇到了另一个指向localhost的链接的问题。如果你想在iframe中使用一个链接,我建议这样做:

cy.get('iframe').then((iframe) => {
  const body = iframe.contents().find('body');
  cy.wrap(body).find('a').click();
});
zengzsys

zengzsys4#

所以,至少对我来说,我的进一步问题是一个内部的令牌,登录等,但是!
我在插件文件夹中发布的代码是如何正确地绕过chrome问题的。2这就是你想要修复它的方法!

yshpjwxd

yshpjwxd5#

我也面临过这个问题。我的应用程序使用的是服务工作者。在访问页面时禁用服务工作者解决了这个问题。

cy.visit('index.html', {
  onBeforeLoad (win) {
    delete win.navigator.__proto__.serviceWorker
  }
})

参考:https://glebbahmutov.com/blog/cypress-tips-and-tricks/#disable-serviceworker

c9x0cxw0

c9x0cxw06#

1.后藤cypress.json文件。
1.将chrome Web安全设置为false

{
    "chromeWebSecurity": false
}
xtfmy6hx

xtfmy6hx7#

为了绕过这些限制,Cypress实现了一些策略,包括JavaScript代码、浏览器的内部API和网络代理,以遵循同源策略的规则。
1.访问项目
1.在文件“cypress.json”中插入

{
  "chromeWebSecurity": false
}

参考:Cypress文档

相关问题