用nodejs搭建代理服务器

代理服务器的原理

在这里插入图片描述

案例

  • 安装 expresshttp-proxy-middleware
  • app.js 文件 node app.js
    var express = require('express');
    var app = express();
    app.use(express.static('./public'));
    app.listen(3000);
    
  • 在 public 文件夹下建立 a.html
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><button onclick="Click()">点击发送请求</button><script src="https://unpkg.com/axios/dist/axios.min.js"></script><script>function Click() {axios('http://localhost:5000/b').then(function(res) {console.log(res);});}</script>
    </body>
    </html>
    </body>
    </html>
    
  • 搭建接口服务器,接口服务器端口号 5000
    node interface.js
    var express = require('express');
    var app = express();app.get("/", (req, res) => {res.send("123");
    });app.get("/api/a", (req, res) => {res.send("a");
    });app.get("/b", (req, res) => {console.log(req.headers);res.send("b");
    });app.listen(5000);
    
  • 访问http://localhost:3000/a.html
    在这里插入图片描述

搭建代理服务器解决跨域问题

  • 更改 app.js
    var express = require('express');
    var proxy = require('http-proxy-middleware');
    var app = express();
    app.use(express.static('./public'));app.use('/api', proxy.createProxyMiddleware({target: 'http://localhost:5000',changeOrigin: false,pathRewrite: {"^/api": ""}
    }));
    app.listen(3000);
    
  • 更改 a.html
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><button onclick="Click()">点击发送请求</button><script src="https://unpkg.com/axios/dist/axios.min.js"></script><script>function Click() {// axios('http://localhost:5000/b')//     .then(function(res) {//         console.log(res);//     });axios('/api/b').then(function(res) {console.log(res);});}</script>
    </body>
    </html>
    </body>
    </html>
    
  • 访问 http://localhost:3000/a.html
    在这里插入图片描述

原理解释

  • 将 a.html 请求地址改为 /api/b,那么发送请求的时候会自动补上主机和端口号http://localhost:3000
    在这里插入图片描述
    在这里插入图片描述
  • 所以请求发送到了3000端口
  • 参数含义
    target: 转发到的目标地址
    changeOrigin: 是否更改host。默认为false,不重写
    true
    在这里插入图片描述
    false
    在这里插入图片描述
    pathRewrite:路径重写(在这里是去掉’api’)
    在这里插入图片描述
  • 最终请求被转发到了 http://localhost:5000/b
    app.get("/b", (req, res) => {console.log(req.headers);res.send("b");
    });
    
  • 整个过程就像这样
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17912.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode连GitHub的代理服务器配置和获取历史版本命令

1. 在VSCode中配置代理&#xff1a; 在设置中查找“Proxy”直接编辑配置文件。或者在如下菜单中点击打开配置文件 在配置文件中添加如下两条。注意http和https的代理都要配置上 "http.proxy": "http://192.168.8.*:8080", "https.proxy": &quo…

巴比特 | 元宇宙每日必读:围剿ChatGPT?继意大利之后,法国、西班牙也对ChatGPT展开调查,欧盟监管机构已成立调查组...

摘要&#xff1a;据财联社报道&#xff0c;自去年末以来&#xff0c;ChatGPT人工智能机器人在全球引发高度关注。在人们为该AI系统表现出的强大能力所惊叹的同时&#xff0c;其数据准确性及隐私相关问题也引发人们的担忧。在意大利最早对ChatGPT采取了监管举措后&#xff0c;当…

AIGC用于智能写作的技术综述-达观数据

导语 图1. ChatGPT生成的关于智能写作的介绍 智能写作指使用自然语言处理技术来自动生成文本内容。这种技术通过分析给定语料库&#xff0c;学习文本的结构和语法&#xff0c;然后利用这些信息来生成新的文本。智能写作可以用来快速生成高质量的文本内容&#xff0c;并且可…

谷歌Bard是拿ChatGPT数据训练的?BERT一作抗议无果,跳槽OpenAI...

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【多模态学习】微信技术交流群 转载自&#xff1a;机器之心 谷歌顶尖科学家向皮查伊、Jeff Dean 请愿未果&#xff0c;最后只好跳槽 OpenAI。 打不过就加入&#xff0c;打不过…

Bard是拿ChatGPT数据训练的?谷歌顶级科学家抗议无果,出走OpenAI

源 | 机器之心 谷歌顶尖科学家向皮查伊、Jeff Dean 请愿未果&#xff0c;最后只好跳槽 OpenAI。 打不过就加入&#xff0c;打不过就直接用&#xff1f; 相比成为科技领域里程碑的 ChatGPT&#xff0c;谷歌推出的竞品 Bard 亮相似乎并不令人印象深刻&#xff0c;对于这家科技巨头…

借助 ChatGPT 编写的 libbpf eBPF 工具开发实践教程: 通过例子学习 eBPF

这是一个基于 CO-RE&#xff08;一次编译&#xff0c;到处运行&#xff09;的 libbpf 的 eBPF 的开发教程&#xff0c;提供了从入门到进阶的 eBPF 开发实践指南&#xff0c;包括基本概念、代码实例、实际应用等内容。我们主要提供了一些 eBPF 工具的案例&#xff0c;帮助开发者…

城市路边停车收费系统/停车收费管理系统

摘 要 近年来&#xff0c;随着社会的进步和发展&#xff0c;车辆也在迅速增加&#xff0c;城市交通的瓶颈不仅体现在道路交通的拥挤上&#xff0c;也体现在传统停车场管理效率和安全性大大滞后于社会的需要&#xff0c;给人们的生活带来了极大的不便。尤其&#xff0c;随着汽车…

字节辟谣被裁员工与 HR 互殴;苹果头显多个新功能曝光;谷歌希望 RISC-V 成为 T1 级 Android 架构|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

《花雕学AI》26:多维度了解ChatGPT思维链提示的原理、方法、使用和发展的22个问题

早上5点起床&#xff0c;没有去打羽毛球&#xff0c;打开电脑&#xff0c;漫无边际的浏览&#xff0c;偶然发现了一个提法&#xff1a;ChatGPT思维链提示。于是&#xff0c;我使用与ChatGPT同源技术的新Bing引擎&#xff08;GPT-4&#xff09;&#xff0c;来进行搜索与了解相关…

《花雕学AI》人类推理能力对AI来说是什么?用ChatGPT来检验一下

”这里有一本书、九个鸡蛋、一台笔记本电脑、一个瓶子和一个钉子&#xff0c;请告诉我如何把它们稳定地堆叠在一起&#xff1f;“ 这是去年提出的一道测试推理能力的题目&#xff0c;当微软的计算机科学家开始试验一种新的AI系统时&#xff0c;他们要求AI解决这个难题&#xf…

哈尔滨联通java_哈尔滨联通套餐资费-哈尔滨联通套餐资费介绍2021【哈尔滨集号吧】...

哈尔滨联通4G全国套餐资费 4G基本套餐56 月租56元&#xff0c;送来显&#xff0c;含国内语音可视拨打100分钟&#xff0c;国内流量500M&#xff0c;超出后国内主叫0.15元/分钟&#xff0c;国内流量 0.30元/M&#xff0c;国内短信彩信0.10元/条&#xff0c;全国接听免费&#xf…

NETCTOSS02_资费管理模块

NETCTOSS02_资费管理模块 结果展示: 用到的技术: 1.搭建struts2项目 2.访问数据库,查询结果显示在jsp中 3.分页技术 源代码及具体细节如下: Cost.java 实体类 package com.qxl.netctoss.entity;import java.sql.Timestamp;public class Cost {private int costId; //…

JSP程序设计实训——通信资费管理系统

通信资费管理系统 目的是实现通信资费管理系统的静态页面设计&#xff0c;要求能够逐步掌握Java Web项目开发的流程和页面的设计。案例分为三部分实现&#xff0c;分为案例需求分析、案例架构分析和案例开发&#xff08;编程实现&#xff09;。 一. 案例需求分析 根据业务模…

百度神卡套餐资费

注意&#xff1a;如果之前的身份证办理过中国联通推出的的蚂蚁宝卡等卡&#xff0c;则不可以再办了

自动化测试软件费用,计费引擎资费自动化测试

摘要&#xff1a;计费系统一代代地升级变迁&#xff0c;测试人员都在重复地做着繁琐的资费测试。历代资费测试工具都在重复地造轮子。计费引擎的测试经验能否一代代继承下来&#xff1f;不仅是测试流程的积累&#xff0c;更多的是业务测试及测试框架的积累。全品牌的所有业务线…

校园电信资费平台项目

GitHub地址&#xff1a;https://github.com/mdxiaohu/schoolPostageSystem 小组成员和任务责任划分 目录 项目描述 由于电信公司有UNIX服务器出租业务&#xff0c;针对该出租业务需要一套办公系统来提升办事效率&#xff0c;提升该业务信息化程度&#xff08;无纸化 办公&#…

GPT专业应用:如何让GPT策划方案

身为一名职场打工人&#xff0c;或多或少会面临需要写策划案的难题。 不管是策划一场线下活动&#xff0c;还是策划业务发展的方向&#xff1b; 甚至到生活中还需要策划婚礼&#xff0c;策划房屋装修&#xff0c;策划和朋友的聚会等等。那么如何快速积累经验&#xff0c;找准…

用漫画生成器打开中国宝藏城市,这些地方你都知道吗?

今日微博热搜“以漫画方式打开中国宝藏县城”不知道大家看了没&#xff0c;中国有许许多多的宝藏小县城&#xff0c;有些因为没有得到推广和开发所以大家都不知道&#xff0c;广东徐闻因菠萝而出名和广西横县因茉莉而出名相信大家都耳熟能详吧。今天小编换个方式带大家了解中国…