🤖 Gemini 2.5 Flash Preview Sep 2025 | Gemini
浏览器中的 window.crypto 对象看不到 subtle 属性,最常见的原因是当前的上下文不是一个安全上下文 (Secure Context)。
window.crypto.subtle 属性返回一个 SubtleCrypto 对象,该对象用于进行低级别的加密操作(Web Crypto API 的核心功能)。出于安全原因,大多数现代浏览器(如 Chrome、Firefox 等)要求这些功能只能在安全上下文中使用。
安全上下文通常指:
HTTPS 协议: 通过
https://提供的网页。localhost和127.0.0.1: 在本地开发时,http://localhost或http://127.0.0.1通常被认为是安全的(尽管有些较新版本的 Firefox 在使用默认 HTTP 端口时可能出现问题,但一般情况下是安全的)。其他特定的安全协议: 例如
wss(WebSocket Secure)、file://协议等(详见 MDN 文档中关于安全上下文的说明)。
如果你的网站是通过非 HTTPS 的 HTTP 协议提供的(例如 http://your-domain.com ),那么 window.crypto.subtle 就会是 undefined。
解决方案:
使用 HTTPS: 如果是部署到线上环境,请确保使用 HTTPS 来提供你的网页。
使用
localhost或127.0.0.1: 如果是本地开发环境,请确保通过http://localhost或http://127.0.0.1访问你的应用。本地启用 HTTPS: 在本地开发时,你可以考虑为本地服务器生成自签名证书并使用 HTTPS 访问。 [^1]: stackoverflow.com