【技术支持】关于crypto.randomUUID返回undefine

现象

代码中使用了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,忽略安全警告即可(需手动点击“高级”→“继续访问”)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值