遇到的问题

在开发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. Node.js开发博客项目笔记-初始化路由(博客列表、新增、更新、删除、详情、登录)(3)

    工程目录 如图所示,工程目录如下: 我们在工程下新建src的目录,src目录下新建三个文件夹: controller:交互数据放到该目录下: model:model类放到该目录下: router:路由 ...

  2. 探索AI人才培养新范式,合合信息与同济大学软件学院签署产教融合人才培养协议

    随着科学技术的发展,促进人工智能产业与高校人才培养相融合,正成为业界关注的焦点.7月3日,上海合合信息科技股份有限公司(以下简称:合合信息)与同济大学软件学院"产教融合人才培养签约暨创新实践 ...

  3. Windows远程设置''不可复制''的权限

    起因: 有一个技术部门的同事需要远程其他同学的电脑进行操作,但是不允许他复制目标电脑上的文件,避免造成资料外泄 解决办法: 组策略编辑器中,设置 计算机配置 -> 管理模板 -> wind ...

  4. Camera 冷启动阶段分解

    目录 一.Camx trace 调试开关设置 1.设置 camxoverridesettings trace开关 2. 重启后设置开启camx trace 开关 二.Camera 冷启动阶段分解分析 ...

  5. 【Simpleperf】Android的CPU分析,性能优化利器

    很多时候,写代码是一件很爽的事情,但最后需要对APP进行瘦身.性能分析却是一件很棘手的事情.当需要对APP的性能进行分析时,Simpleperf是一个简单快捷的选择. 正文开始前,先奉上官方的资料: ...

  6. 1. 什么是three.js?

    Three.js是一个基于JavaScript编写的开源3D图形库,它使用WebGL技术在网页上渲染3D图形.Three.js提供了许多高级功能,如几何体.纹理.光照.阴影等,以便开发者能够快速地创建 ...

  7. KubeSphere 社区双周报|07.05-07.18

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  8. 云原生周刊:Terraform 1.8 发布 | 2024.5.6

    开源项目推荐 xlskubectl 用于控制 Kubernetes 集群的电子表格.xlskubectl 将 Google Spreadsheet 与 Kubernetes 集成.你可以通过用于跟踪费 ...

  9. 一次彻底讲清如何处理mysql 的死锁问题

    MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导致所有事务都无法继续执行的现象.在 InnoDB 存储引擎中,死锁是通过锁机制产生的,特别是在并发较高.业务逻辑复杂的情况下,更容易发生 ...

  10. keycloak~token配置相关说明

    会话有效期 在 Keycloak 中,"SSO Session Idle" 和 "SSO Session Max" 是用于配置单点登录(SSO)会话的两个参数. ...