vue使用 @noble/secp256k1 的时候,在本地调试时能够正常加密,但一旦改为内网IP或域名的时候就会出现这个问题
追下去源码,发现无法调用的对象是这个subtle
而隔壁的crypto.web则来源于window.crypto
所以问题定位成在非127.0.0.1和localhost下,window.crypto.subtle是无法获取到的,只能加上https才能使用该函数。
在这篇回答里面也确定了这个问题:
https://stackoverflow.com/questions/62259020/make-local-network-ip-a-secure-context
结论:windows.crypto需要在本地和https生产环境中使用