在使用 Cypress 进行测试时,有时候会遇到访问 https 网站时出现 NET::ERR_CERT_AUTHORITY_INVALID
错误的情况。这种情况通常是由于证书不受信任而引起的。本文将介绍如何解决这个问题。
了解证书
在讨论如何解决 NET::ERR_CERT_AUTHORITY_INVALID
错误之前,我们需要了解一下证书的基本知识。在 https 协议中,服务器需要提供一个证书,证明其身份的合法性。证书是由权威的第三方(称为 CA,证书颁发机构)颁发并签名的,可以通过 CA 的公钥验证证书的合法性。这就意味着,只有受信任的 CA 才能颁发有效的证书。
如果服务器的证书不受信任,那么浏览器在访问该网站时就会提示 NET::ERR_CERT_AUTHORITY_INVALID
错误。
解决方案
要解决 NET::ERR_CERT_AUTHORITY_INVALID
错误,我们需要让 Cypress 相信网站的证书。有两种方法可以实现这个目标。
方法一:忽略证书错误
如果您不关心证书的真实性,可以配置 Cypress 忽略证书错误。可以在 Cypress 的 cypress.json
配置文件中设置 chromeWebSecurity
属性为 false
,即禁止 Chrome 的 Web 安全功能,这样就可以访问不受信任的证书。示例代码如下:
{ "chromeWebSecurity": false }
不过,在实际的开发和测试中,使用这种方法并不是一个好的选择。因为它会降低网站的安全性,将会使您的应用容易受到网络攻击。
方法二:信任证书
第二种方法是让 Cypress 信任网站的证书。这需要在 Cypress 的启动脚本中添加一些代码。首先,您需要安装 cypress-plugin-tab
插件,让 Cypress 支持多标签页。安装命令如下:
npm install cypress-plugin-tab --save-dev
安装完成后,在 Cypress 的启动脚本 cypress/plugins/index.js
中添加以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ----------- - ------------------------------------ -------------- - ---- -- - --------------------------- -------- - --- -------------- -- - -- --------------- --- ----------- - ------------------------------------------------------ ---------------------------------------------------------------------------- --------------------------------------------------------------------- ------ ----------- -------------------- -------- -------------------- ------------ -- -------- -- - --------------------- -- -------- -- - ------ ------------- -- --------- -- - ------ ------------- -- - -- -
这个脚本将启用 Chrome 的 --ignore-certificate-errors
选项,绕过证书验证。它还会创建一个临时的证书,将它加入到系统的信任列表中,并指定为路由配置中的证书。
在 Cypress 的 cypress.json
中添加以下配置:
{ "baseUrl": "https://your-website.com" }
这里的 your-website.com
是您要测试的网站 URL。
现在,您就可以愉快地访问 HTTPS 网站,即使网站的证书不被信任。
总结
本文介绍了两种解决 NET::ERR_CERT_AUTHORITY_INVALID
错误的方法。尽管第一种方法很简单,但它会降低网站的安全性。建议选择第二种方法,将 Cypress 配置为信任证书。这虽然需要一些额外的工作,但它将确保您的代码和应用程序的安全性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ab645048841e989473751d