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

ops/2024/10/18 9:17:57/

文章目录

    • 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/ops/27037.html

相关文章

为什么Bash中的“[“和“]“周围应该有空格

问题: 我试图编写一个使用 if 语句的 Bash 脚本。 if[$CHOICE -eq 1];脚本一直在报错,直到我在 [ 前后并在 ] 之前加了一个空格,如下所示: if [ $CHOICE -eq 1 ];我的问题是,为什么在 Bash 中方括号周围的空格如此重…

IDEA 申请学生许可证

如果你有学生账号,并且账号是 EDU 结尾的,可以申请 IDEA 的学生许可证。 有效期一年,完全免费。 在界面上输入邮件地址,然后单击按钮提交。 邮件中单击链接 JetBrains 会把一个带有链接的邮件发送到你的邮箱中。 单击邮箱中的…

8.机器学习-十大算法之一朴素贝叶斯(Naive Bayes)算法原理讲解

8.机器学习-十大算法之一朴素贝叶斯(Naive Bayes)算法原理讲解 一摘要二个人简介三朴素贝叶斯算法简介朴素贝叶斯算法概念贝叶斯方法朴素贝叶斯算法贝叶斯公式 四贝叶斯算法的核心思想:利用贝叶斯定理进行分类五优缺点优点缺点 六朴素贝叶斯原…

网络通信协议,UDP和TCP,初步了解

UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)是两种常见的网络通信协议,用于在计算机网络中进行数据传输。 1. TCP:Transmission Control Protocol(传输控制协议&#xf…

[高质量]2024五一数学建模A题保奖思路+代码(后续会更新)

你的点赞收藏是我继续更新的最大动力,可点击文末卡片获取更多资料 你是否在寻找数学建模比赛的突破点? 作为经验丰富的数学建模团队,我们将为你带来2024 年华东杯(A题)的全面解析包。这个解决方案包不仅包括完整的代…

Tomcat的请求连接配置

从默认配置看,SpringBootd的最大可以处理8292个请求,方便记忆是:不到8300 server:port: 8081tomcat:threads:max: 20 #最大工作线程数min-spare: 10 #最小工作线程数max-connections: 8192 #最大请求连接数ac…

JS加密和JS混淆有什么不同?

JS编程人员为了保护源代码免遭未经授权的查看、抄袭或篡改,常常采用JS加密和JS混淆这两种技术。尽管它们都旨在提升代码的安全性,但两者之间存在本质区别。 JS加密:锁住数据的秘密 JS加密主要是针对代码中的敏感数据进行防护,如…

RKNN Toolkit2 工具的使用

RKNN Toolkit2 是由瑞芯微电子 (Rockchip) 开发的一套用于深度学习模型优化和推理的工具。它主要面向在瑞芯微SoC上进行AI应用开发,但也可以用于PC平台进行模型的转换、量化、推理等操作。它支持将多种深度学习框架的模型(如Caffe, TensorFlow, PyTorch等…