【问题标题】:Node https.Agent in browser浏览器中的节点 https.Agent
【发布时间】:2021-03-25 21:42:08
【问题描述】:

我的 npm 模块(打字稿)的一部分正在使用 axios 发出 Web 请求。可能的端点之一是使用证书进行身份验证。对于这种情况,我将 new https.Agent 传递给 axios 以发送证书信息。如果从 Node 应用程序中使用该模块,则一切正常。

问题是如果我尝试在浏览器环境中使用我的模块。在浏览器中https 模块不存在并且我无法使用我的模块时。

  • 有没有办法在浏览器中使用https模块?
  • 如果没有 - https 可以以某种方式捆绑在我的模块中吗?在这种情况下,我是否必须使用一些捆绑器(如 Rollup)来构建 typescript 模块?

【问题讨论】:

  • 如果没有 polyfill,您无法轻松地将代码从一个主机环境移动到另一个主机环境,即使如此,您也必须随着浏览器的变化而及时了解 polyfill。我建议第三个要点:如何使用浏览器原生代码重写我的代码?
  • 完全同意你的看法。不幸的是,在没有 https 代理的情况下,我找不到从浏览器发送带有证书的请求的方法。

标签: node.js typescript npm


【解决方案1】:

你做不到。大多数浏览器都支持 TLS 客户端证书身份验证,但它的工作方式有所不同:用户会看到一个窗口,并要求用户选择一个证书进行身份验证。这与 cookie 的工作原理类似——您无法在客户端从 JS 轻松操作 HttpOnly cookie。

如果您想在浏览器中进行 TLS 客户端身份验证,则任由浏览器供应商摆布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2021-06-30
    • 2016-09-21
    • 1970-01-01
    相关资源
    最近更新 更多