vue的build先上部署的 devServer不生效的场景记录

embedded/2024/10/18 9:16:47/

文章目录

    • Nginx 相关命令
    • VUE项目devServer.proxy(正向代理)匹配请求中的地址工作流程
      • 开发期间代理proxy的配置
      • 项目打包上线出现的问题描述

Nginx 相关命令

//运行命令
start nginx 启动nginx服务//运行命令
nginx -s stop 停止nginx服务//运行命令
nginx -s reload 重载配置//运行命令
taskkill /f /t /im nginx.exe

devServerproxy_16">VUE项目devServer.proxy(正向代理)匹配请求中的地址工作流程

在本地开发的过程中,为了本地调试方便,通常会在vue.config.js 中配置 devServer。在devServer中配置proxy属性。实现开发期间的轻松跨域请求
目的:可以将指向本地的请求http://localhost:8080/api/action ,代理到后端的开发服务器上http://localhost:8089/personal-management/action

正向代理:代理服务器代替客户端向服务器发起请求。隐藏客户端。
发起请求:代理服务器从客户端发出请求,向目标服务器发起请求。
响应数据:目标服务器响应请求,代理服务器接收请求,并转发给客户端。
注:魔法就是使用的这个原理。

开发期间代理proxy的配置

javascript">devServer: { host: 'localhost',//服务器地址port: 8080,webSocketServer: false,proxy: {//配置跨域'/api': {target: 'http://localhost:8089',changeOrigin: true,/** 是否允许跨域 */ws: false,//是否启用websockets,用不到可设为falsepathRewrite: {//对路径匹配到的字符串重写"^/api": "", //请求到 http://localhost:8080/api/user//代理到请求 http://localhost:8089/user },}}} 

当浏览器发起一个请求后, 前端拿配置项中的地址去匹配请求中的地址,如果请求的地址中包含配置中的地址,则匹配成功,匹配成功后,会将匹配到的地址及其后面的地址拼到target的后面,向后端服务器发起跨域请求。

项目打包上线出现的问题描述

最开始将devServer.proxy中的代理地址改成了服务器地址,然后就执行了npm run build打包dist文件,将其部署上线[使用的是Tomcat]。

  • 初始问题是:无法访问到我后端的验证码。

  • 寻找原因:因为在vue.config.js中配置的 devServer.proxy 只是在开发环境下将请求代理到后端服务器的本地服务,我们把项目打包成dist文件只把我们的组件等资源打包了,并不会将代理服务器给打包,所以项目中的请求路径不完整导致访问不到对应资源。我访问的依旧是localhost:8080

怎么解决呢????????

  • 资源要被访问,那必然还是需要有另一个代理来装载它。我们部署上线最常见的就是使用proxy_pass 代理跨域转发! 只需要修改配置文件即可,添加proxy_pass即可,xxx.xxx.xxxx.xxx表示你的服务器地址,8889是我后端的访问端口。
location ^~/api/ {proxy_pass http://xxx.xxx.xxx.xxx:8889/api/;} 

补:2024-4-25

 proxy_cookie_path   /     /api/;    # 解决 nginx 反向代理时 session 丢失 无效

proxy_cookie_path是一个Nginx指令,用于在代理请求时调整Cookie的路径。在你提供的配置中,proxy_cookie_path指令的作用是将请求中的Cookie的路径从根路径"/“修改为”/api"/路径,以便在反向代理时保持session有效。这对解决Nginx反向代理时session丢失的问题很有用。

underscores_in_headers是一个Nginx配置指令,控制Nginx是否允许HTTP请求头中包含下划线。默认情况下,该配置项为off,这意味着Nginx会拒绝这样的请求头,并返回400 Bad Request错误。将其设置为on则允许这样的请求头,但这可能会带来安全风险,因为不是所有服务器都能正确处理这些请求头。

underscores_in_headers on; (默认 underscores_in_headers 为off)

后面单独测试了一下这个,亲测可用

axios.defaults.timeout = 5000 // 请求超时↳
axios.defaults.baseURL = 'http://www.wangzhi.com/'

http://www.ppmy.cn/embedded/17701.html

相关文章

FastGPT编译前端界面,并将前端界面映射到Docker容器中

建议在linux系统下编译 1、克隆代码 git clone https://github.com/labring/FastGPT 2、进入FastGPT目录,执行 npm install 3、进入projects/app目录,执行 npm run dev 此时会自动下载依赖包,这里如果执行npm install的话,…

为什么删除node_modules文件夹很慢

在处理Node.js项目时,删除node_modules文件夹常常是一个非常缓慢的过程。这个现象主要由以下几个原因造成: 1. 文件和目录数量庞大 node_modules 文件夹之所以删除缓慢,最直接的原因是它包含了大量的文件和目录。当你通过npm或yarn这样的包…

ELK日志采集系统

1.什么是ELK ELK 是一套流行的数据搜索、分析和可视化解决方案,由三个开源项目组成,每个项目的首字母合起来形成了“ELK”这一术语: Elasticsearch (ES): Elasticsearch 是一个基于 Apache Lucene 构建的分布式、实时搜索与分析引擎。它能够…

计算机网络基础

目录 TCP/IP 四层模型 网络协议 HTTP 流程 报文 GET 和 POST HTTPS和HTTP HTTPS SSL 和 TLS TCP 报文结构 TCP和UDP 三次握手和四次挥手 如何确保可靠性 流量控制 拥塞控制 IP DNS RPC协议 Cookie 和 Session Cookie Session 区别 B/S结构和C/S结构 C/S结构 B/S结构 …

机器学习day2

一、KNN算法简介 KNN 算法,或者称 k最邻近算法,是 有监督学习中的分类算法 。它可以用于分类或回归问题,但它通常用作分类算法。 二、KNN分类流程 1.计算未知样本到每一个训练样本的距离 2.将训练样本根据距离大小升序排列 3.取出距离最近…

【圆桌论坛】个人作为嘉宾参与问答环节的总结,Create 2024百度AI开发者大会之AI智能体开发与应用论坛

目录 ⭐前言⭐讨论话题✨本质和价值✨端侧部署✨应用商业模式✨商业模式 ⭐主题总结⭐有趣分享 ⭐前言 首先,非常荣幸和开心作为开发者和创业者代表参加百度Create AI大会分论坛圆桌论坛的问答环节。 在分论坛活动开始前,参加了文心智能体平台&#xff…

XiaodiSec day026 Learn Note小迪安全学习笔记

XiaodiSec day026 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 day26 sql 注入 知识点 oracle & Mongodb 相关手动注入 开始 sqlmap 不支持 nosql –purge 清除缓存 –current-db 查看当前数据库 –dump -r 直接使用数据包访问,在…

go-cqhttp 机器人使用教程

API | go-cqhttp 帮助中心 参考 | go-cqhttp 帮助中心 机器人下载 发送消息 http://127.0.0.1:5700/send_msg?message_typeprivate&user_id911412667&message你好呀 检查端口是否打开 netstat -ano | findstr :5701 发送的请求 软件的dopost的解析 Overridepro…