node实现简单的反向代理服务器


Posted in Javascript onJuly 26, 2017

每当提起反向代理器,人们通常一想到的就是 Nginx,但是今天我们暂时忽略大名鼎鼎的 Nginx,采用同样也是使用单线程、事件循环的服务端小弟——Node 来达成

跨域问题是前端开发很常见的问题

解决方案有很多种

  1. jsonp返回
  2. Access-Control-Allow-Origin:'*' (需要注意的是 对于post请求会变成option请求需求后端支持)
  3. 前端添加代理

前端添加代理

以vue-cli为例,前端添加代理

dev: {
  env: require('./dev.env'),
  port: 8888,
  autoOpenBrowser: true,
  assetsSubDirectory: 'static',
  assetsPublicPath: '/',
  proxyTable: {
   '/api':{
    target: 'http://localhost:3000',
    changeOrigin: true,
   }
  }

其中'/api'为接口的前缀,target为后端服务地址

前端请求示例

vm.$http.post('/api/reg', JSON.stringify(info)).then(() => {

 }, () => {

 });

反向代理

反向代理可以理解为指定一个服务地址为内部服务器地址。

为什么需要反向代理

如果只是作为接口请求,其实前端搭建代理服务器就可以了,但是代理服务器并不能满足所有的日常开发。

比如说单点登录的实现,需求服务端做302跳转。但是前端文件没有部署到后端服务器时,set-cookie是不能成功种下cookie登录信息的。

这就需要在后端服务器添加反向代理。

示例如下

const http = require('http');
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer();
const proxyServer = http.createServer((req, res) => {
 proxy.web(req, res, {
  target: 'http://localhost:8888',
 });
});
proxyServer.listen(8088, () => {
 console.log('proxy server is running ');
});

这样前端开发就可以在8088端口了,当然热加载功能是在前端服务器的8888端口

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS解析XML的实现代码
Nov 12 Javascript
window.showModalDialog()返回值的学习心得总结
Jan 07 Javascript
JavaScript优化专题之Loading and Execution加载和运行
Jan 20 Javascript
javascript js 操作数组 增删改查的简单实现
Jun 20 Javascript
JS仿百度自动下拉框模糊匹配提示
Jul 25 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
Jan 08 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
Sep 21 Javascript
微信小程序云开发使用方法新手初体验
May 16 Javascript
ajax跨域访问遇到的问题及解决方案
May 23 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
Sep 21 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
Mar 04 Javascript
怎么理解wx.navigateTo的events参数使用详情
May 18 Javascript
Angular项目中$scope.$apply()方法的使用详解
Jul 26 #Javascript
Vue中计算属性computed的示例解读
Jul 26 #Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 #Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 #Javascript
js实现图片轮播效果学习笔记
Jul 26 #Javascript
Angular4如何自定义首屏的加载动画详解
Jul 26 #Javascript
vue上传图片组件编写代码
Jul 26 #Javascript
You might like
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
layui table 参数设置方法
2018/08/14 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
Django自带的用户验证系统实现
2020/12/18 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
项目计划书范文
2014/01/09 职场文书
初中体育教学反思
2014/01/14 职场文书
家长会邀请书
2014/01/25 职场文书
精彩的英文自荐信
2014/01/30 职场文书
公务员转正考察材料
2014/02/07 职场文书
大学信息公开实施方案
2014/03/09 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
中秋晚会活动方案
2014/08/31 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
工作时间证明
2015/06/15 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫