http与https协议区别;vue3本地连接https地址接口报500

文章目录


问题

问题:本地开发时候,连接开发环境http的地址接口访问正常;但是本地连接测试环境地址https接口访问500

解决方案

https时候,需要配置secure: false 禁用 SSL 证书验证

一、问题原因分析

  1. 开发环境 vs 测试环境的协议差异

    • 开发环境:http://192.168.90.91:33000 (HTTP协议)
    • 测试环境:https://192.168.90.60:33020 (HTTPS协议)
  2. secure: false 的作用

    • 当代理目标(target)使用 HTTPS 协议时,Vite 代理默认会验证 SSL 证书的有效性。
    • secure: false 禁用 SSL 证书验证,允许代理到使用自签名证书或无效证书的 HTTPS 服务。
  3. 为什么开发环境不需要配置

    • 开发环境使用 HTTP 协议,不涉及 SSL 证书验证,因此无需 secure: false
  4. 为什么测试环境需要配置

    • 测试环境使用 HTTPS,但其证书可能是:
      • 自签名证书(非权威机构颁发)
      • 证书域名与 IP 地址不匹配(如用域名证书但通过 IP 访问)
      • 证书已过期
    • 浏览器和 Node.js 默认会拒绝此类证书,导致 500 错误。

二、解决方案详解

1. 保持当前配置(推荐临时方案)

在代理配置中显式设置 secure: false

javascript 复制代码
proxy: {
  "/inms-application": {
    target: loadEnv(mode, "./env/").VITE_APP_SERVEICE,
    changeOrigin: true,
    secure: false, // 禁用证书验证
    // ...其他配置
  }
}

优点 :快速解决问题
缺点:存在中间人攻击风险(仅限开发环境可接受)

2. 更安全的方案(推荐)

步骤

  1. 获取测试环境的证书

    • 访问 https://192.168.90.60:33020 → 点击地址栏锁图标 → 导出证书(如 test-env.crt
  2. 在项目中配置证书

    javascript 复制代码
    import fs from 'fs';
    
    server: {
      proxy: {
        "/inms-application": {
          target: loadEnv(mode, "./env/").VITE_APP_SERVEICE,
          changeOrigin: true,
          secure: true, // 保持验证
          ca: fs.readFileSync('path/to/test-env.crt'), // 添加自签名证书
        }
      }
    }

优点 :保持安全性
缺点:需额外证书文件

3. 环境区分配置(最佳实践)
javascript 复制代码
const isTestEnv = loadEnv(mode, "./env/").VITE_APP_SERVEICE.includes('https');

server: {
  proxy: {
    "/inms-application": {
      target: loadEnv(mode, "./env/").VITE_APP_SERVEICE,
      changeOrigin: true,
      secure: !isTestEnv, // 仅在测试环境禁用验证
    }
  }
}

三、为什么开发环境不用配置?

  • HTTP 协议无需证书:开发环境使用 HTTP,代理时不会触发 SSL 验证流程。
  • 测试环境触发验证:HTTPS 协议要求证书合法性检查,而测试环境的证书不符合 Node.js 的默认信任规则。

💡 根本原因:测试环境的 HTTPS 证书未通过 Node.js 的严格验证(自签名/IP不匹配/过期等),而开发环境的 HTTP 不存在此问题。

相关推荐
captain37611 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
yi碗汤园17 小时前
MQTT消息队列遥测传输协议
网络·网络协议·unity
花间相见19 小时前
【后端开发|网络编程】—— 五种实时通信方案全解析:短轮询、长轮询、SSE、MQTT、WebSocket
后端·网络协议
其实防守也摸鱼1 天前
DeepSeek Harness 开源贡献手记:从入门到合入主线
服务器·数据库·windows·https·ssl
Lsetea1 天前
OpenSSL快速生成域名证书:含SAN的自签命令、验证与排错
nginx·https·ssl证书·openssl·自签证书
AKA__Zas1 天前
跨网段主机的文件传输过程
java·网络·网络协议·学习方法
2501_916008891 天前
SSE 和 gRPC 流式接口如何抓包,调试 SSE 与 gRPC 流式接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
其实防守也摸鱼1 天前
堆叠注入(Stacked Injection)详解
服务器·数据库·windows·https·ssl
鱼月半2 天前
两台电脑直连网络不通怎么办?
linux·网络协议
布莱克6052 天前
HTTP 状态码详解:从分类到实战
计算机网络·http·状态码