解决使用 Cypress 访问 https 网站遇到的 NET::ERR_CERT_AUTHORITY_INVALID 错误

阅读时长 4 分钟读完

在使用 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 安全功能,这样就可以访问不受信任的证书。示例代码如下:

不过,在实际的开发和测试中,使用这种方法并不是一个好的选择。因为它会降低网站的安全性,将会使您的应用容易受到网络攻击。

方法二:信任证书

第二种方法是让 Cypress 信任网站的证书。这需要在 Cypress 的启动脚本中添加一些代码。首先,您需要安装 cypress-plugin-tab 插件,让 Cypress 支持多标签页。安装命令如下:

安装完成后,在 Cypress 的启动脚本 cypress/plugins/index.js 中添加以下代码:

-- -------------------- ---- -------
----- ------- - ------------------
----- ----------- - ------------------------------------

-------------- - ---- -- -
  --------------------------- -------- - --- -------------- -- -
    -- --------------- --- ----------- -
      ------------------------------------------------------
      ----------------------------------------------------------------------------
      ---------------------------------------------------------------------

      ------ -----------
        --------------------
          -------- -------------------- ------------
        --
        -------- -- -
          ---------------------
        --
        -------- -- -
          ------ -------------
        --
        --------- -- -
          ------ -------------
        --
    -
  --
-

这个脚本将启用 Chrome 的 --ignore-certificate-errors 选项,绕过证书验证。它还会创建一个临时的证书,将它加入到系统的信任列表中,并指定为路由配置中的证书。

在 Cypress 的 cypress.json 中添加以下配置:

这里的 your-website.com 是您要测试的网站 URL。

现在,您就可以愉快地访问 HTTPS 网站,即使网站的证书不被信任。

总结

本文介绍了两种解决 NET::ERR_CERT_AUTHORITY_INVALID 错误的方法。尽管第一种方法很简单,但它会降低网站的安全性。建议选择第二种方法,将 Cypress 配置为信任证书。这虽然需要一些额外的工作,但它将确保您的代码和应用程序的安全性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ab645048841e989473751d

纠错
反馈