全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解用node.js实现简单的反向代理

之前用node.js实现简单的反向代理,最近需要回顾,就顺便发到随笔上了

不多说直接上代码!

const http = require('http');
const url = require('url');
const querystring = require('querystring');


http.createServer(function(oreq, ores) {
  console.log("服务已开启");
  if (oreq) {
    if (oreq.url !== '/favicon.ico') {
      let content = '',
        postData = '';
      // 封装获取参数的方法
      function getParmas(oUrl) {
        let oQuery = (typeof oUrl === "object") ? oUrl : url.parse(oUrl, true).query,
          data = {};
        for (item in oQuery) {
          if (item !== 'hostname') {
            if (item !== 'path') {
              data[item] = oQuery[item];
            }
          }
        }
        return querystring.stringify(data);
      };
      // 封装发起http请求的方法
      function httpRequest(options, ores) {
        let datas = "";
        return http.request(options, function(res) {
          res.setEncoding('utf8');
          res.on('data', function(chunk) {
            // 返回数据
            datas += chunk;
          });
          res.on('end', function() {
            ores.writeHead(200, {
              "Content-Type": "application/json; charset = UTF-8",
              "Access-Control-Allow-Origin": "*"
            });
            ores.end(datas);
          })
        })
      };
      // 数据块接收中
      console.log(oreq.method.toUpperCase());
      if (oreq.method.toUpperCase() === "POST") {
        console.log("进入POST");
        oreq.on("data", function(postDataChunk) {
          postData += postDataChunk;
        });
        // 数据接收完毕,执行回调函数
        oreq.on("end", function() {
          console.log("接收完毕")
          console.log(postData);
            // 配置options
          let oData = JSON.parse(postData);

          postData = getParmas(oData);

          let options = {
            hostname: oData.hostname,
            port: '80',
            path: oData.path,
            method: "POST"
          };
          // 发送请求
          let req = httpRequest(options, ores);
          req.on('error', function(e) {
            console.log('problem with request: ' + e.message);
          });
          req.write(postData); //发送请求数据
          req.end();
        });

      } else {
        let queryObj = url.parse(oreq.url, true).query;
        content = getParmas(oreq.url);
        let options = {
          hostname: queryObj.hostname,
          port: '80',
          path: queryObj.path + content,
          method: "GET"
        };
        // 发送请求
        let req = httpRequest(options, ores);
        req.on('error', function(e) {
          console.log('problem with request: ' + e.message);
        });
        req.end();
      }
    }
  }
}).listen(8080, '127.0.0.1');

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


# nodejs  # 反向代理  # 实现反向代理  # node  # 抛弃Nginx使用nodejs做反向代理服务器  # Node.js站点使用Nginx作反向代理时配置GZip压缩的教程  # 腾讯云(ubuntu)下安装 nodejs + 实现 Nginx 反向代理服务器  # Linux安装NodeJs并配合Nginx实现反向代理  # 利用node.js实现反向代理的方法详解  # 上了  # 多说  # 回调  # 大家多多  # typeof  # object  # oQuery  # postData  # content  # oUrl  # getParmas  # path  # hostname  # stringify  # return  # item  # true  # parse  # data  # query 


相关文章: 昆明网站制作哪家好,昆明公租房申请网上登录入口?  网站网页制作专业公司,怎样制作自己的网页?  如何在阿里云购买域名并搭建网站?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  网站制作公司排行榜,四大门户网站排名?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何在腾讯云服务器快速搭建个人网站?  如何挑选优质建站一级代理提升网站排名?  如何快速生成凡客建站的专业级图册?  建站之家VIP精选网站模板与SEO优化教程整合指南  如何在阿里云域名上完成建站全流程?  建站主机如何选?性能与价格怎样平衡?  高端企业智能建站程序:SEO优化与响应式模板定制开发  网站专业制作公司有哪些,做一个公司网站要多少钱?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  个人摄影网站制作流程,摄影爱好者都去什么网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何确保西部建站助手FTP传输的安全性?  如何快速搭建支持数据库操作的智能建站平台?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  如何选择域名并搭建高效网站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  制作网页的网站有哪些,电脑上怎么做网页?  网站制作企业,网站的banner和导航栏是指什么?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  如何选购建站域名与空间?自助平台全解析  如何访问已购建站主机并解决登录问题?  如何通过山东自助建站平台快速注册域名?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  网页设计与网站制作内容,怎样注册网站?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  建站主机如何选?高性价比方案全解析  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  临沂网站制作公司有哪些,临沂第四中学官网?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  网站制作说明怎么写,简述网页设计的流程并说明原因?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  宝塔面板创建网站无法访问?如何快速排查修复?  Android使用GridView实现日历的简单功能  宁波免费建站如何选择可靠模板与平台? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。