NodeJs 第二十章 代理

本文介绍了在开发过程中,如何使用Node.js通过http-proxy-middleware中间件解决浏览器与Java或Go服务之间的跨域问题,通过示例展示了如何设置和运行一个简单的代理服务器。
摘要由CSDN通过智能技术生成

在计算机网络中,代理是一种中间服务,能够代理用户与网络资源之间的通信。代理服务器可以缓存网页内容、过滤网络流量或隐藏用户的真实IP地址等功能。

在日常开发中,我们接触最多的是客户端发送ajax到服务端。但是服务端并不是 node ,而是java或者go
例如我们用 vue 开发应用。我们的感知是从客户端直接发送 ajax 到服务端。但是在浏览器发送ajax 到服务端,服务端响应到浏览器会出现跨域。这个时候就需要配置代理,node 此时就可以充当这个角色。
实际在开发环境 vue 就是利用 express 创建了一个开发服务,充当代理角色。这个代理服务主要是利用 http-proxy-middleware 中间件,实现代理服务器。

在这里插入图片描述

node 实现代理服务器原理

  1. 浏览器发送 ajax 请求到 node 服务
  2. node 服务将和 java 或者 go 服务约定好的 api转发给java 或者 go服务端
  3. java 服务或者 node 服务响应个 node 代理服务
  4. node 服务在响应给浏览器

简单示例

const http = require('http');

const proxyServer = http.createServer((request, response) => {
  // 创建代理请求的选项
  const options = {
    hostname: '目标服务器的主机名',
    port: 80, // 目标服务器的端口号
    path: request.url,
    method: request.method,
    headers: request.headers
  };

  // 发起代理请求
  const proxyRequest = http.request(options, (proxyResponse) => {
    // 将代理服务器收到的响应转发给客户端
    response.writeHead(proxyResponse.statusCode, proxyResponse.headers);
    //  将代理服务器的响应通过管道传输给客户端,实现响应的转发。
    proxyResponse.pipe(response);
  });

  // 将客户端发来的请求体转发给目标服务器
  request.pipe(proxyRequest);

  // 处理代理请求错误
  proxyRequest.on('error', (error) => {
    console.error('代理请求错误:', error);
    response.statusCode = 500;
    response.end();
  });
});

// 启动代理服务器
const PORT = 3000;
proxyServer.listen(PORT, () => {
  console.log('代理服务器已启动,监听端口', PORT);
});
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值