http项目改为/支持https的方案、无需修改后台代码

背景描述:原来的项目前后台都是http,现在某个服务要求前台必须使用https;

方案1:前台部署在https里,后面代码修改;但是微服务架构,后台工作量太大;

方案2:前台部署在https里,后台代码不修改;

             此时需要完成三个问题:

问题1:前台如何部署在https中;tomcat或者nginx;优先使用nginx;

步骤1:生成nginx的对应证书;使用域名证书,或者研发环境证书都可以;

参考文档:安装openshell,生成nginx证书;

Windows/Linux 生成Nginx证书【Nginx代理https】_crt pem key nginx代理-CSDN博客

步骤2:

1.1,把证书,前端代码都放在nginx中

1.2,配置证书和前台路径

案例中9909是前端https端口,9903是后端https端口,9901是后端http请求

1.3,启动nginx,通过https在浏览器访问前端;

1.3.1,nginx日志,在logs/error.log中;【假如启动报错,这里面都能看到错误信息】

问题2:https的前端,对应的必须是https的后端;需要把https转换为http【同样用nginx,可以使用同一个nginx】

    server {
        listen 9903 ssl;
        server_name  192.168.100.104;

        ssl_certificate      E:/nginx-1.16.1a/cert/server.pem;
        ssl_certificate_key  E:/nginx-1.16.1a/cert/server.key;
         location / {
                proxy_pass http://218.96.105.54:9901;
        }

配置后台的端口和证书

问题3:如何处理前后端端口不一样的跨域问题【核心】

启动nginx;在浏览器使用https访问前台,并登录系统;查看浏览器控制台是否报错;

常见错误信息

1、重复处理跨域【需要去掉一个跨域】

Access to XMLHttpRequest at 'https://192.168.100.104:9989/GateWayPC/LoginAndSetting/login' from origin 'https://192.168.100.104:9905' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values 'https://192.168.100.104:9905, http://192.168.100.104:9901', but only one is allowed.

解决方案:去掉多余的跨域处理

2、没有处理跨院【需要增加跨域处理】

Access to XMLHttpRequest at 'https://192.168.100.104:9989/jf/PSysyteminit/selectPSysyteminitByNameAndCode?code=A59' from origin 'https://192.168.100.104:9905' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决方案:增加跨域处理

3、其他错误

nginx Request header field uuid is not allowed by Access-Control-Allow-Headers in preflight response

解决方案add_header 'Access-Control-Allow-Headers' 'uuid,

最终nginx配置:

1,证书;2,前端https端口和后端https端口,后端http端口;3,如何处理跨域;

经验总结:

1,最开始使用nginx只能做一些简单的配置,这么复杂的头一次遇到;

1.1,遇到问题,先网络找答案;你遇到的问题,大家都遇到过;注意答案可以参考,但不要一模一样照抄;

1.2,一定要详细查看每种方案的报错信息。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/637997.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【linux特殊符号】

文章目录 学习目标一、Linux的特殊符号1.系统变量2.引号 总结 学习目标 1.学会查看系统变量 2.学会各种引号 3.一、Linux的特殊符号 1.系统变量 windows系统变量:echo %path% linux系统变量:echo $PATH2.引号 " " 双引号,换行…

AJAX(JQuery版本)

目录 前言 一.load方法 1.1load()简介 1.2load()方法示例 1.3load()方法回调函数的参数 二.$.get()方法 2.1$.get()方法介绍 2.2详细说明 2.3一些例子 2.3.1请求test.php网页并传送两个参数 2.3.2显示test返回值 三.$.post()方法 3.1$.post()方法介绍 3.2详细说明 …

JVM学习-垃圾回收(三)

System.gc 通过System.gc()或Runtime.getRuntime().gc()的调用,会显示触发Full GC,同时对老年代和方法区进行回收,尝试释放被丢弃对象占用的内存然后System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用JVM实现者可以通…

瑞芯微RV1126——交叉编译与移植

一、搭建这个nfs服务挂载 (1) sudo apt install nfs-kernel-server (2) 然后在你的ubuntu创建一个nfs共享目录: (3) sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务 (4) 修改配置文件: sudo vim /etc/exports 在这个配置文件里面添加:/hom…

Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比

🔥 个人主页:空白诗 文章目录 👋 引言📌 Vuex 基础知识核心构成要素示例代码 📌 Pinia 基础知识核心构成要素示例代码 📌 Vuex与Pinia的区别📌 使用示例与对比📌 总结 👋…

【Linux学习】进程间通信 (1) —— 管道

下面是有关进程通信中管道的相关介绍,希望对你有所帮助! 小海编程心语录-CSDN博客 1. 进程通信的基本概念 1.1 概念 进程间通信简称 IPC ,指两个进程之间的通信。 IPC的方式通常有管道(包括无名管道和命名管道)、消息…

复现Apache HTTPD 多后缀解析漏洞

准备一个纯净的Ubuntu系统 1.先更新一下安装列表 sudo apt-get update 2.安装dockers.io sudo apt install docker.io 查看是否安装成功 docker -v 3. 查看是否安装pip,没有的话就安装 sudo apt-get install python3-pip 4. 安装docker-compose pip install docker-comp…

性能测试工具

性能测试工具 1.Jmeter 环境搭建1.安装JDK2.安装Jmeter1.下载2.安装3.环境配置 3.Jmeter 文件目录介绍1.bin目录2.docs 目录3.printable_docs目录4.lib目录 4.修改默认配置1.汉化配置2.修改主题 5.元件的基本介绍6.元件的作用域作用域的原则 7.元件的执行顺序 1.Jmeter 环境搭建…

Axure RP 9 for Mac/win:重新定义交互原型设计的未来

在当今数字化时代,交互原型设计已成为产品开发中不可或缺的一环。Axure RP 9作为一款功能强大的交互原型设计软件,凭借其出色的性能和用户友好的界面,赢得了广大设计师的青睐。 Axure RP 9不仅支持Mac和Windows两大主流操作系统,…

C#数据类型变量、常量

一个变量只不过是一个供程序操作的存储区的名字。 在 C# 中,变量是用于存储和表示数据的标识符,在声明变量时,您需要指定变量的类型,并且可以选择性地为其分配一个初始值。 在 C# 中,每个变量都有一个特定的类型&…

三能一体运营体系助力政企支撑水平提升

生产力的发展是现代社会孜孜不倦的追求,由此产生了我们熟悉的“机械化、电子化、信息化”乃至现今正在发生的“智能化”四次工业革命。这些是由技术的突破性发展带来的,但我们也注意到生产力发展的另一个助力,即生产效率的提升,19…

指数分布的理解,推导与应用

指数分布的定义 在浙大版的教材中,指数分布的定义如下: 若连续型的随机变量 X X X的概率密度为: f ( x ) { 1 θ e − x θ , x>0 0 , 其他 f(x) \begin{cases} \frac{1}{\theta} e^{-\frac{x}{\theta}}, & \text{x>0}\\ 0, &a…

编程基础:掌握运算符与优先级

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、运算符的基石:加减乘除 二、比较运算符:判断数值大小 三、整除…

Tensorflow入门实战 P01-实现手写数字识别mnist

目录 1、背景:MNIST手写数字识别 2、完整代码(Tensorflow): 3、运行过程及结果: 4、小结(还是很清晰的) 5、 展望 🍨 本文为🔗365天深度学习训练营 中的学习记录博客…

智慧水务可视化大屏,一屏纵览水务信息。

智慧水务可视化大屏通常需要展现以下几类信息: 01.实时监测数据: 包括水源水质、水压、水位、水流速等实时监测数据,通过图表、曲线等形式展示,帮助监测人员了解当前水务系统的运行状态。 02.设备运行状态: 展示水泵…

监控上网的软件有哪些?含泪推荐的电脑监控软件

监控上网的软件有很多,企业选择的时候应该遵循什么样的原则呢?鄙人愚见,认为以下四项原则是选择监控软件时首要考虑的。 1、功能需求: 监控软件不应该只是起到控制上网的作用,因为一些泄密行为可能是通过USB接口、打印…

AI大模型的口语练习APP

开发一个使用第三方大模型的口语练习APP涉及多个步骤,从需求分析到部署上线。以下是详细的开发流程和关键步骤,通过系统化的流程和合适的技术选型,可以有效地开发出一个功能丰富、用户体验良好的口语练习APP。北京木奇移动技术有限公司&#…

Ipad air6买什么电容笔?5款超值精品平替电容笔推荐!

电容笔作为ipad的最佳拍档,为学生党和打工人带来了极大的便利,二者搭配效率真的大大提升,但是,如何选购一支适合自己的电容笔呢?作为一个对数码设备非常感兴趣并且有一定了解的人,我根据自己多年的使用经验…

DeepDriving | CUDA编程-03:线程层级

本文来源公众号“DeepDriving”,仅用于学术分享,侵权删,干货满满。 原文链接:CUDA编程-03:线程层级 DeepDriving | CUDA编程-01: 搭建CUDA编程环境-CSDN博客 DeepDriving | CUDA编程-02: 初识CUDA编程-C…

【搜索】BFS

#include <iostream> #include <cstring> #include <queue>using namespace std;const int N 110;typedef pair<int, int> PII;int n, m; int g[N][N], d[N][N];//存放地图//存每一个点到起点的距离int bfs() {queue< PII > q;q.push({0, 0});m…