首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问主站点时出现cypress - 403禁止错误

访问主站点时出现cypress - 403禁止错误
EN

Stack Overflow用户
提问于 2018-07-03 05:20:54
回答 1查看 4.3K关注 0票数 1

我正在尝试cy.visit()我的单页面应用程序,它需要加载到浏览器中的证书才能正确运行。在运行测试时,它会失败,并显示403禁止错误。有一个很糟糕的办法--我在cypress/chrome浏览器窗口中打开一个新标签,然后直接转到我的web应用程序,它会提示我选择几次我的证书,然后加载页面。如果我随后重新加载测试,它会以某种方式保留我的证书选择,并直接转到页面并运行测试。如果它必须像在before或beforeEach循环中那样执行第二个cy.visit(),那么它将返回403禁止错误。当启动cypress/chrome浏览器时,证书提示似乎破坏了测试,因为它通常会提示选择证书。由于它会自动执行此操作,因此永远不会出现提示,并且不会发送/加载证书,等等,并且会出现403。

有没有人遇到过这种情况,并提出了比我的变通办法更好的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2019-01-12 16:00:28

代码语言:javascript
复制
httpProxy.createProxyServer({
target: {
protocol: 'https:',
host: 'my-domain-name',
port: 443,
pfx: fs.readFileSync('path/to/certificate.p12'),
passphrase: 'password', },
changeOrigin: true,
}).listen(4440);

解决方案:

添加一个http代理服务器,并将PKI附加到传出请求上,因此,假设您将代理设置为侦听localhost:4440,那么现在您正在执行cy.visit(http://localhost:4440)。代理将appends ()请求转发给主机:‘my-domain-name’,并附加PKI。

出于某种原因,无论Cypress在幕后做什么,都会阻止Cypress浏览器在PKI证书上加载/转发。您可能还需要使用cert utils https://www.systutorials.com/docs/linux/man/1-certutil/在执行服务器数据库上安装证书。CY电子浏览器将自动加载安装在数据库上的证书,因此重要的是,您只有在其上具有访问被测应用程序的权限的证书。当想要在CI管道中运行时,这一切都可以在Ansible中完成。是一个痛苦的设置,涉及一些团队努力和一个伟大的开发人员,他喜欢参与测试。Cypress已经被证明是值得所有的努力,所以deff希望你重新考虑使用,如果你现在还没有解决它的话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51143873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档