http-proxy

http-proxy是一个nodejs的http代理库,已经被webpack-dev-server集成进来,做代理使用。原因是在前后端分离大行其道的今天,我们如果需要在本地调后端api接口,不配置hostname的话,必然是一个跨域的请求。因为浏览器的跨域安全限制,调取是不通的,所以本地代理就成了一个本地开发环境的必选项。

'/saasapi/*': {target: 'http://ebk.17u.cn',
},

意思呢大概就是把saasapi开头的ajax请求重定向到http://ebk.17u.cn

本地开发没有问题,线上如果也是用nodejs的服务器,如果恰巧也配置了代理,部署到线上出现了意想不到的问题~

后端nginx配置了反向代理

一个网站主域名是17u.cn,后端如果部署了多个api服务,那这样子他的api服务可能是这样子

主域名 二级域名1 二级域名2 二级域名3
17u.cn ebk.17u.cn ebk2.17u.cn ebk3.17u.cn

前端同样部署了3个nodejs服务,也同样配置了3个代理。部署到线上却发现,请求总是指向第一个二级域名,其他的二级域名访问不到。

百思不得姐!

后来仔细查看http的信息,发现几个服务的ajax请求发到服务器上之后,hostname都是浏览器的域名,而nginx的反向代理配置都是根据hostname来做转发的。因为我们的hostname对于nginx来说都是陌生的,所以就默认转发到默认的第一个服务上去了。

查了http-proxy配置,哈哈,果然有这种修改的配置,只要稍微改一下就好了。

'/saasapi/*': {target: 'http://ebk.17u.cn',changeOrigin: true
},

changeOrigin: true意思就是把hostname改为和target一致就可以了。这样后端nginx就可以正常转发了。

后端配置了cookie Path

后端api,不仅仅配置了二级域名,还配置了二级目录,前端部署的服务也一样需要二级目录。

api地址就变成这个样子:

ebk.17u.cn/saasapi

前端地址:

trans.17u.cn/saas

代理配置做对应调整

'/saas/saasapi/*': {target: 'http://ebk.17u.cn',changeOrigin: true,rewrite: path => path.replace(/^\/saas\/saasapi\/cxy/, '/saasapi')
},

这样子看起来很正常吧,但是问题出在哪呢?后端把登录之后设置的cookie也设置了path:Path='/saasapi'

这样子问题就来了,trans.17u.cn/saas当前域名下读取不到/saasapi下面的cookie,导致前端登录每次都通过,但就是不能正常调api,每次调取都提示没有登录。

有问题还是先查文档。

还是发现了解决方案

cookiePathRewrite: { '/saasapi': '/saas/saasapi' }

重写cookie路径就好了,同理如果后端接口指定了cookie的domain,一样有方案解决

cookieDomainRewrite

还有一些其他rewrite,应该都比较好用的。

ps:在解决过程中,发现改了也总是不能成功,一度怀疑是库的bug。后来发现需要清除掉chrome的cookie。

直接点Application -> Cookie:删除下面的cookie是不行的。清理不掉全部的cookie,需要到Application -> clear storage中,clear site data才可以。最终成功

nodejs之http-proxy几点常见问题相关推荐

  1. Verdaccio介绍及安装 -- nodejs私有npm proxy registry代理

    Verdaccio 是一个 Node.js创建的轻量的私有npm proxy registry Verdaccio 是一个跨平台的 Web 应用程序. 在安装之前,您需要确保系统环境已满足以下条件. ...

  2. NVM安装nodejs的方法

    安装nodejs方式有很多种. 第一种:官网下载  通过nodejs官网下载安装 ,但有个缺陷,不同版本的nodejs无法顺利的切换. 第二种: NVM安装  NVM可以帮助我们快速切换 node版本 ...

  3. NVM - Nodejs的版本管理工具安装和使用

    NVM全名:Node.js Version Management,nodejs的版本管理工具.通过它可以安装和切换不同版本的nodejs.下面列出下载.安装及使用方法. (当前仅在windows环境下 ...

  4. nodeJS如何快速升级降级?

    我笔记本上的nodeJS是10版本的,在运行前端VUE项目时,报错,具体错误信息为: 咳咳咳,没有记录下来.. 总而言之,项目用的是8版本,我的是10版本,跑的时候有问题,所以需要降级. 具体的降级方 ...

  5. 使用nvm安装nodejs

    一.nvm是什么? 在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常 ...

  6. onlyoffice 本地二次开发基础教程

    前言 本教程面向需要有二次开发的同学,主要是面向前端UI开发(本人使用MAC环境搭建),windows应该类似 搭建环境要求 nodejs 自己使用 10.15.3 docker 安装步骤 组织目录结 ...

  7. Node.js入门(含NVM、NPM、NVM的安装)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. Node.js的介绍 引擎 引擎的特性: JS的内核即引擎.因为引擎有以 ...

  8. Windows command tools

    Babun - a windows shell you will love Cmder - Portable console emulator for Windows Settings Nodejs ...

  9. node.js开发环境配置

    node.js是什么 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

  10. 前端node 和vue开发之环境搭建

    下载nvm nodejs 的快捷键是配置后自动生成的 nvm 的 setting.txt配置 root: C:\dev\nvm path: C:\dev\nodejs arch: 32 proxy: ...

最新文章

  1. emoji 乱码_这个自制emoji的网站,让你成为永远不输的斗图王者
  2. 半透明遮罩层覆盖整个可视区域
  3. 零基础如何入门数据分析?
  4. 手机远程ssh登录Linux,Linux SSH(远程登录)到Milestone手机
  5. 使用 iptables 限制***猜密码续—深入 recent 模块
  6. datagridview绑定数据源不显示_sharding-jdbc系列之 数据源配置(一)
  7. java arraylist排序_一文读懂Java集合框架
  8. c/c++教程 - 2.4.2.6 初始化列表语法,初始化列表参数
  9. android报错:org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject
  10. 怎样使用Javascript操作XMLDOM才能兼容IE、FireFox浏览器呢?
  11. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_19-页面静态化-模板管理-模板存储...
  12. 民企信息化建设个人经历(一)
  13. Android地图轨迹抽稀、动态绘制
  14. 柳传志退休,联想的贸工技路线对错由后人评说
  15. python求数独全解
  16. NLP文档挖宝(1)——tokenizer的诞生
  17. 电影数据分析——国产烂片深度揭秘
  18. 使用Python将mat文件转换为npy文件
  19. 计算机组装与维护我要自学网,【答疑】3D机械建模软件有哪些,3D机械建模一般用的是哪个软件? - 视频教程线上学...
  20. Zk中组建显示模型mold都有哪些

热门文章

  1. AI模型走下高科技神坛、走进大规模量产、深入渗透产业界丨百度研究院2020十大预测...
  2. 中国程序员人数将增长50%,过半500强都要卖软件,边缘应用程序增长8倍丨IDC预测下一个五年...
  3. 《Docker技术入门与实战》——2.4 本章小结
  4. CentOS 7 程序自启动的问题
  5. org.springframework.beans包
  6. 深入理解JavaScript系列(33):设计模式之策略模式(转)
  7. Eclipse 每行 79 字符限制的提示线
  8. getBoundingClientRect计算页面元素的offsetLeft、offsetTop
  9. windows聚焦壁纸不更新_技术编辑示范win10系统锁屏壁纸聚焦不更新的处理教程
  10. 2019年python课本_2019年Python学习指南