现象
代码中使用了crypto.randomUUID(),在开发阶段一切正常
当代码打包进入生产环境时crypto.randomUUID()返回undefine
原因
浏览器策略,浏览器在非https、localhost的环境中访问时,crypto.randomUUID 是不可用的
开发时使用的是localhost正常访问
生产临时使用的是http,所以访问发生错误❌
解决方式
使用自签名证书(快速测试)
1. 生成自签名证书
生成私钥和自签名证书(有效期365天)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/nginx/ssl/self.key \
-out /etc/nginx/ssl/self.crt \
-subj "/CN=YOUR_IP_OR_DOMAIN"
将 YOUR_IP_OR_DOMAIN 替换为你的服务器 IP(如 192.168.1.100)。
2. 配置 Nginx 启用 HTTPS
编辑 Nginx 配置文件(如 /etc/nginx/sites-available/default):
server {
listen 443 ssl;
server_name YOUR_IP; # 例如 192.168.1.100
ssl_certificate /etc/nginx/ssl/self.crt;
ssl_certificate_key /etc/nginx/ssl/self.key;
# 其他配置(如根目录、代理等)
location / {
root /var/www/html;
index index.html;
}
}
强制 HTTP 跳转到 HTTPS(可选)
server {
listen 80;
server_name YOUR_IP;
return 301 https://$host$request_uri;
}
3. 重启 Nginx
sudo nginx -t # 测试配置
sudo nginx -s reload #重载配置文件
sudo systemctl restart nginx # 不用重启也行,但必须重新加载配置文件
4. 访问 HTTPS
在浏览器中输入 https://YOUR_IP,忽略安全警告即可(需手动点击“高级”→“继续访问”)。


2261

被折叠的 条评论
为什么被折叠?



