遇到的问题

在开发vue 前端程序时,我们会创建多个项目,比如用户管理为一个应用,系统管理为一个应用,这样多个应用势必需要开多个端口,这样问题就来了,我们在登录后会生成一个token,这个token我们会存到浏览器的localstorage 中,这样 token 在不同的应用中就不能共享了,希望在登录后,不同的应用都能读到这个token。

解决方案

我们可以使用nginx 来解决这个问题,利用nginx 的反向代理功能,我们可以通过不同的上下文路径,将请求转发到不同的应用,这样我们可以通过一个域名访问到不同的应用,这样跨域的问题自然就解决了。

nginx 配置文件配置如下:

location /jpaas {
proxy_set_header Host $host;
proxy_pass http://localhost:8002;
} location /api/ {
proxy_set_header Host $host;
proxy_pass http://localhost:9900/;
}

这样我们通过访问 /jpaas/ 就将请求转发到 http://localhost:8002/jpaas

注意proxy_pass 的配置,注意后面是否带 /

如果不带 / 请求会转发到 http://localhost:port/上下文

如果带 / 请求会转发到 http://localhost:port ,不包含上下文。

VUE程序改造

因为应用默认是没有上下文的,因此我们需要对程序一些修改:

比如修改 vue.config.js

const vueConfig = {
publicPath: "/jpaas",

默认是没有 这个 publicPath 的,我们增加一个。

另外 proxy 也可以去掉:

devServer: {
// development server port 8000
port: 8002,
/*
proxy: {
'/api': {
//target: 'http://139.186.65.108:9900',
//target: 'http://129.28.157.247:9900',
target: 'http://localhost:9900',
pathRewrite: { '^/api': '' },
ws: false,
changeOrigin: true
}
}*/
},

这里的proxy 是可以注释掉的,他的意思是将使用 /api 的请求转发到 后端的网关,因为我们在上面统一通过nginx 来处理,所以这里我们 就不再需要这个这个来处理跨域的问题。

修改路由配置

export default new Router({
mode: 'history',
base: "/jpaas",
scrollBehavior: () => ({ y: 0 }),
routes: constantRouterMap
})

这里增加一个base。

这样 我们通过一个nginx 就实现了 多个应用的跨域问题。

使用nginx 解决开发过程中的跨域问题的更多相关文章

  1. 解决django中的跨域问题

    解决django中的跨域问题: Django项目中出现跨域问题,用第三方包django-cors-headers来解决跨域问题. 安装:pip install django-cors-headers; ...

  2. Nginx解决前端访问资源跨域问题

    被前端跨域问题折磨快2天后,终于用ngnx的方式解决了,所以在此总结下. 该篇只探讨如何用Ngnx解决跨域问题,对于原理不作讨论. 1.首先介绍Windows环境下Nignx的相关命令操作 nginx ...

  3. 使用Spring CROS解决项目中的跨域问题

    CROS(Cross-Origin Resource Sharing) 用于解决浏览器中跨域请求的问题.简单的Get请求可以使用JSONP来解决,而对于其它复杂的请求则需要后端应用的支持CROS.Sp ...

  4. 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)

    前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...

  5. Springboot中关于跨域问题的一种解决方法

    前后端分离开发中,跨域问题是很常见的一种问题.本文主要是解决 springboot 项目跨域访问的一种方法,其他 javaweb 项目也可参考. 1.首先要了解什么是跨域 由于前后端分离开发中前端页面 ...

  6. ASP.NET中Cookie跨域的问题及解决代码

    ASP.NET中Cookie跨域的问题及解决代码 http://www.liyumei.net.cn/post/share18.html Cookies揭秘  http://www.cnblogs.c ...

  7. js中各种跨域问题实战小结(二)

    这里接上篇:js中各种跨域问题实战小结(一) 后面继续学习的过程中,对上面第一篇有稍作休整.下面继续第二部分: -->5.利用iframe和location.hash -->6.windo ...

  8. js中各种跨域问题实战小结(一)

    什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略 ...

  9. php中ajax跨域请求---小记

    php中ajax跨域请求---小记   前端时间,遇到的一个问题,情况大约是这样: 原来的写法: 前端js文件中: $.ajax({ type:'get', url:'http://wan.xxx.c ...

  10. JS中实现跨域的方法总结

    今天早上在地铁看了点基础知识的考察题,看到了一个JS跨域的问题,仔细想了想自己脑子里竟然只剩下jsonp跨域和用nginx反向代理进行跨域,想着还有别的几种方法,就是想不起来,这个人呢,一上岁数这个脑 ...

随机推荐

  1. 通用能力及AI核心能力表现优异!合合信息智能文档处理系统(IDP)高评级通过中国信通院评估

    数字经济快速发展的背后,全球数据总量呈现出爆发式增长趋势.智能文档处理(IDP)技术能够高效地从多格式文档中捕捉.提取和处理数据,帮助机构和企业大幅提升文档处理效率,节约时间和人力成本.近期,合合信息 ...

  2. 痛定思痛,好好做人,从头过一遍PyTorch框架(一)(1.深度学习简介、2.预备知识)

    现在是2024年2月24日,13:59,从研一就开始断断续续说要过一遍框架,到现在博一下学期,还一直拖着呢,拖延症太可怕啦,决定好好做人,不拖了,就从现在开始,好好过一遍,呜呜呜呜呜呜呜呜,(罪该万死 ...

  3. C# – delegate, event, EventHandler

    前言 写这么多年 C#, 我从来没有写过 EventHandler. 我想应该是因为我没有用 C# 开发过前端的关系, 绝对不是我技术不行哦. 这篇就补上一个学习笔记呗. 参考 C#知识点讲解之C#d ...

  4. c# 8.0

    1. nullable string 从前 string 一定是 nullable. 现在则不一定 string? name = null;  要加 ? 才可以表示 nullable 限制泛型不能 n ...

  5. 3.1 migration to 5.0

    记入我遇到的问题 : 1. localizer.WithCulture 废弃了 https://github.com/dotnet/aspnetcore/issues/7756 其实讨论很久了, 只是 ...

  6. Kubernetes基础(Pod?Label?Namespace?Deployment?Service?)(十二)

    上面我们都是在架构层面了解 Kubernetes,但是似乎没有发现关于容器的说明,Kubernetes 作为容器编排引擎,那么他是怎么去对容器进行编排的呢?在 Kubernetes 集群中抽象了很多集 ...

  7. VulnStack-红日靶机二

    红日靶机二 环境搭建 只需要把虚拟机的 host-only(仅主机)网卡改为 10.10.10.0 网段,如下配置 把 NAT 网卡,改为 192.168.96.0 网段,如下 首先恢复到 v1.3 ...

  8. AE cc 2017 和 2018 中英文切换的方法

    AE cc 2017中文切换英文的方法 找到AE的安装文件目录下的"Support Files"文件夹,路径为 C:\Program Files\Adobe\Adobe After ...

  9. android系统启动流程- ServiceManager进程启动流程

    *注:基于Android11源码 ServiceManager进程是在init进程创建的,所以我们从init进程的main()开始分析: // 文件路径: system/core/init/main. ...

  10. CSharp的@microsoft/signalr实时通信教程 - 前端 vue

    1. 安装@microsoft/signalr pnpm install @microsoft/signalr --save signalr 是微软对 websocket技术的封装,优化了操作 :1. ...