使用nginx 解决开发过程中的跨域问题
遇到的问题
在开发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 解决开发过程中的跨域问题的更多相关文章
- 解决django中的跨域问题
解决django中的跨域问题: Django项目中出现跨域问题,用第三方包django-cors-headers来解决跨域问题. 安装:pip install django-cors-headers; ...
- Nginx解决前端访问资源跨域问题
被前端跨域问题折磨快2天后,终于用ngnx的方式解决了,所以在此总结下. 该篇只探讨如何用Ngnx解决跨域问题,对于原理不作讨论. 1.首先介绍Windows环境下Nignx的相关命令操作 nginx ...
- 使用Spring CROS解决项目中的跨域问题
CROS(Cross-Origin Resource Sharing) 用于解决浏览器中跨域请求的问题.简单的Get请求可以使用JSONP来解决,而对于其它复杂的请求则需要后端应用的支持CROS.Sp ...
- 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)
前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...
- Springboot中关于跨域问题的一种解决方法
前后端分离开发中,跨域问题是很常见的一种问题.本文主要是解决 springboot 项目跨域访问的一种方法,其他 javaweb 项目也可参考. 1.首先要了解什么是跨域 由于前后端分离开发中前端页面 ...
- ASP.NET中Cookie跨域的问题及解决代码
ASP.NET中Cookie跨域的问题及解决代码 http://www.liyumei.net.cn/post/share18.html Cookies揭秘 http://www.cnblogs.c ...
- js中各种跨域问题实战小结(二)
这里接上篇:js中各种跨域问题实战小结(一) 后面继续学习的过程中,对上面第一篇有稍作休整.下面继续第二部分: -->5.利用iframe和location.hash -->6.windo ...
- js中各种跨域问题实战小结(一)
什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略 ...
- php中ajax跨域请求---小记
php中ajax跨域请求---小记 前端时间,遇到的一个问题,情况大约是这样: 原来的写法: 前端js文件中: $.ajax({ type:'get', url:'http://wan.xxx.c ...
- JS中实现跨域的方法总结
今天早上在地铁看了点基础知识的考察题,看到了一个JS跨域的问题,仔细想了想自己脑子里竟然只剩下jsonp跨域和用nginx反向代理进行跨域,想着还有别的几种方法,就是想不起来,这个人呢,一上岁数这个脑 ...
随机推荐
- Ubuntu开机直接进入grub终极解决方法
https://zhuanlan.zhihu.com/p/59062434 我遇到的问题是,每一步都操作没问题,但是开机还是会进入grub.最后只能进bios解决了. 我的服务器是supermicro ...
- 【笔记】Tapable源码解析图以及webpack怎样实现一个插件plugin
Tapable源码解析图,如图所示: 一个webpack plugin由一下几个步骤组成: 一个JavaScript类函数. 在函数原型 (prototype)中定义一个注入compiler对象的ap ...
- Pointer Event Api-整合鼠标事件、触摸和触控笔事件
Pointer Events API 是Hmtl5的事件规范之一,它主要目的是用来将鼠标(Mouse).触摸(touch)和触控笔(pen)三种事件整合为统一的API. Pointer Event P ...
- JavaScript – 单线程 与 执行机制 (event loop)
前言 因为在写 RxJS 系列,有一篇要介绍 Scheduler.它需要对 JS 执行机制有点了解,于是就有了这里篇. 参考 知乎 – 详解JavaScript中的Event Loop(事件循环)机制 ...
- 云上分布式SQL Server,你值得拥有
云上分布式SQL Server,你值得拥有 介绍Microsoft SQL Azure 是微软的云关系型数据库,后端存储又称为云 SQL Server(Cloud SQL Server).它构建在 S ...
- 优化 Go 语言数据打包:性能基准测试与分析
优化 Go 语言数据打包:性能基准测试与分析 场景:在局域网内,需要将多个机器网卡上抓到的数据包同步到一个机器上. 原有方案:tcpdump -w 写入文件,然后定时调用 rsync 进行同步. 改造 ...
- CatGPT Puzzle
规则简述 一个 Nonogram 谜题包含一个 \(m*n\) 大小的空白方格矩阵,以及在表格每一行右侧.每一列下方的一组线索数. 每组都有一个或多个数字,这些数字就是解题的线索. 要想解开 Nono ...
- PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(四)
无论100个表还是30个表,在使用PasteForm模式的时候,管理端的页面是一样的,大概4个页面, 利用不同操作模式下的不同dto数据模型,通过后端修改对应的dto可以做到控制前端的UI,在没有特别 ...
- Blinn-Phong
为什么出现Blinn-Phong 虽然Phong性能较高,但是在某些镜面反射条件下就会失效.比如下图,我们明显发现了一条明显的亮暗边界线,这在实际场景中是不应该发生的(实际场景中不会出现这种明显的过渡 ...
- 利用3D标签,生成RLE标签编码,并保存到csv文件
# coding:utf-8from glob import globimport osimport SimpleITK as sitkfrom pathlib import Pathimport n ...