文章目录

  • 问题
  • 解决方案
    • 一、问题原因分析
    • 二、解决方案详解
        • 1. 保持当前配置(推荐临时方案)
        • 2. 更安全的方案(推荐)
        • 3. 环境区分配置(最佳实践)
    • 三、为什么开发环境不用配置?


问题

问题:本地开发时候,连接开发环境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

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. 在项目中配置证书

    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. 环境区分配置(最佳实践)
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 不存在此问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95376.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95376.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/95376.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——深入理解指针(三)

C语言——深入理解指针(三) 1.回调函数是什么? 首先我们来回顾一下函数的直接调用:而回调函数就是通过函数指针调用的函数。我们将函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调…

kettle 8.2 ETL项目【四、加载数据】

一、dim_store表结构,数据来源于业务表,且随时间会有增加,属于缓慢变化维(SCD)类型二 转换步骤如下 详细步骤如下

【测试报告】SoundWave(Java+Selenium+Jmeter自动化测试)

一、项目背景 随着数字音乐内容的爆炸式增长,用户对于便捷、高效的音乐管理与播放需求日益增强。传统的本地音乐管理方式已无法满足多设备同步、在线分享与个性化推荐等现代需求。为此,我们设计并开发了一款基于Spring Boot框架的SoundWave,旨…

C++ 类和对象详解(1)

类和对象是 C 面向对象编程的核心概念,它们为代码提供了更好的封装性、可读性和可维护性。本文将从类的定义开始,逐步讲解访问限定符、类域、实例化、对象大小计算、this 指针等关键知识,并对比 C 语言与 C 在实现数据结构时的差异&#xff0…

奈飞工厂:算法优化实战

推荐系统的算法逻辑与优化技巧在流媒体行业的 “用户注意力争夺战” 中,推荐系统是决定成败的核心武器。对于拥有2.3 亿全球付费用户的奈飞(Netflix)而言,其推荐系统每天处理数十亿次用户交互,最终实现了一个惊人数据&…

【人工智能99问】BERT的训练过程和推理过程是怎么样的?(24/99)

文章目录BERT的训练过程与推理过程一、预训练过程:学习通用语言表示1. 数据准备2. MLM任务训练(核心)3. NSP任务训练4. 预训练优化二、微调过程:适配下游任务1. 任务定义与数据2. 输入处理3. 模型结构调整4. 微调训练三、推理过程…

[TryHackMe]Challenges---Game Zone游戏区

这个房间将涵盖 SQLi(手动利用此漏洞和通过 SQLMap),破解用户的哈希密码,使用 SSH 隧道揭示隐藏服务,以及使用 metasploit payload 获取 root 权限。 1.通过SQL注入获得访问权限 手工注入 输入用户名 尝试使用SQL注入…

北京JAVA基础面试30天打卡09

1.MySQL存储引擎及区别特性MyISAMMemoryInnoDBB 树索引✅ Yes✅ Yes✅ Yes备份 / 按时间点恢复✅ Yes✅ Yes✅ Yes集群数据库支持❌ No❌ No❌ No聚簇索引❌ No❌ No✅ Yes压缩数据✅ Yes❌ No✅ Yes数据缓存❌ NoN/A✅ Yes加密数据✅ Yes✅ Yes✅ Yes外键支持❌ No❌ No✅ Yes…

AI时代的SD-WAN异地组网如何落地?

在全球化运营与数字化转型浪潮下,企业分支机构、数据中心与云服务的跨地域互联需求激增。传统专线因成本高昂、部署缓慢、灵活性差等问题日益凸显不足。SD-WAN以其智能化调度、显著降本、敏捷部署和云网融合的核心优势,成为实现高效、可靠、安全异地组网…

css中的color-mix()函数

color-mix() 是 CSS 颜色模块(CSS Color Module Level 5)中引入的一个强大的颜色混合函数,用于在指定的颜色空间中混合两种或多种颜色,生成新的颜色值。它解决了传统颜色混合(如通过透明度叠加)在视觉一致性…

Github desktop介绍(GitHub官方推出的一款图形化桌面工具,旨在简化Git和GitHub的使用流程)

文章目录**1. 简化 Git 操作****2. 代码版本控制****3. 团队协作****4. 代码托管与共享****5. 集成与扩展****6. 跨平台支持****7. 适合的使用场景****总结**GitHub Desktop 是 GitHub 官方推出的一款图形化桌面工具,旨在简化 Git 和 GitHub 的使用流程,…

整数规划-分支定界

内容来自:b站数学建模老哥 如:3.4,先找小于3的,再找大于4的 逐个

JetPack系列教程(六):Paging——让分页加载不再“秃”然

前言 在Android开发的世界里,分页加载就像是一场永无止境的马拉松,每次滚动到底部,都仿佛在提醒你:“嘿,朋友,还有更多数据等着你呢!”但别担心,Google大佬们早就看透了我们的烦恼&a…

扎实基础!深入理解Spring框架,解锁Java开发新境界

大家好,今天想和大家聊聊Java开发路上绕不开的一个重要基石——Spring框架。很多朋友在接触SpringBoot、SpringCloud这些现代化开发工具时,常常会感到吃力。究其原因,往往是对其底层的Spring核心机制理解不够透彻。Spring是构建这些高效框架的…

Heterophily-aware Representation Learning on Heterogeneous Graphs

Heterophily-Aware Representation Learning on Heterogeneous Graphs (TPAMI 2025) 计算机科学 1区 I:18.6 top期刊 📌 摘要 现实世界中的图结构通常非常复杂,不仅具有全局结构上的异质性,还表现出局部邻域内的强异质相似性(heterophily)。虽然越来越多的研究揭示了图…

计算机视觉(7)-纯视觉方案实现端到端轨迹规划(思路梳理)

基于纯视觉方案实现端到端轨迹规划,需融合开源模型、自有数据及系统工程优化。以下提供一套从模型选型到部署落地的完整方案,结合前沿开源技术与工业实践: 一、开源模型选型与组合策略 1. 感知-预测一体化模型 ViP3D(清华&#…

Nginx 屏蔽服务器名称与版本信息(源码级修改)

Nginx 屏蔽服务器名称与版本信息(源码级修改) 一、背景与目的 在生产环境部署 Nginx 时,默认配置会在 Server 响应头中暴露服务类型(如 nginx)和版本号(如 nginx/1.25.4)。这些信息可能被攻击者…

从钢板内部应力视角,重新认识护栏板矫平机

一、为什么钢板会“自带波浪”? 钢卷在热轧后冷却、卷取、长途运输、多次吊运时,不同部位受到的温度、张力、碰撞并不一致,内部会产生不均匀的残余应力。应力大的区域想“伸长”,应力小的区域想“缩短”,宏观上就表现为…

C++中的`auto`与`std::any`:功能、区别与选择建议

引言 在C编程中,auto和std::any是两个功能强大但用途不同的工具。理解它们的区别和适用场景对于编写高效、可维护的代码至关重要。本文将详细介绍auto和std::any的基本概念、使用方法、适用场景以及它们之间的区别,并提供选择建议,帮助开发者…

【Linux】进程(Process)

一、什么是进程二、进程的创建三、进程的状态四、僵尸进程五、孤儿进程六、进程的优先级 以及 并发/并行七、进程的切换一、什么是进程?什么是进程呢(一)?官方话来说:进程是一个执行实例、正在执行的程序、是系统资源分配的基本单位按课本官方话可能有一…