我的编程空间,编程开发者的网络收藏夹
学习永远不晚

httpproxy对网络请求进行代理使用详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

httpproxy对网络请求进行代理使用详解

正文

使用下面这段简单的代码对网络请求进行代理:

const http = require('http');
const httpProxy = require('http-proxy');
const targetUrl = 'https://www.sap.cn/index.html';
const proxy = httpProxy.createProxyServer({
    target: targetUrl,
});
http.createServer(function (req, res) {
    proxy.web(req, res);
}).listen(8089);
console.log('Proxy listens in 8089');

这段代码的语义是,创建一个代理 HTTP 服务器,监听在端口 8089 上。

因此该代理服务器接收到任何发送到 8089 端口的 HTTP 请求,都会自动将其发送到 targetUrl 指定的 sap 网站上。

命令行启动服务器

node server.js

遇到如下错误消息:

Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: Host: localhost. is not in the cert's altnames: 

详细的调用栈

at Object.checkServerIdentity (tls.js:297:12)
    at TLSSocket.onConnectSecure (_tls_wrap.js:1507:27)
    at TLSSocket.emit (events.js:315:20)
    at TLSSocket._finishInit (_tls_wrap.js:932:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:706:12) {
  reason: "Host: localhost. is not in the cert's altnames: DNS:www.sap.cn",
  host: 'localhost',
  cert: {
    subject: [Object: null prototype] {
      C: 'DE',
      L: 'Walldorf',
      O: 'SAP SE',
      CN: 'www.sap.cn'
    },

当我们使用 SSL 连接到服务器时,服务器所做的第一件事就是提供一个证书,上面写着 我是 api.dropbox.com。 证书有一个 主题,该主题有一个 CN(Common Name, 通用名称的缩写)。证书也可以有一个或多个 subjectAltNames

当 node.js 连接到服务器时,node.js 会获取此证书,然后验证它认为它正在连接的域名 (api.dropbox.com) 是否与主题的 CN 或其中一个替代名称匹配。

请注意,在 node 0.10.x 中,如果使用 IP 连接,则 IP 地址必须在 altnames 中 - node.js 不会尝试根据 CN 验证 IP。

虽然错误是关于 SSL 证书和域名不匹配,但是在 http-proxy 模块中,当您的服务器是 HTTP 并且目标是 HTTPS 时,通常会出现这种错误。

到这个开发包的官网 查找原因。

捕捉错误

proxy.on('error', function(e) {
  ...
});

当一个请求被代理时,它遵循两个不同的管道,它们将转换应用于 req 和 res 对象。 第一个管道(传入)负责创建和操作将客户端连接到 target 的流。 第二个管道(传出)负责创建和操作从 target 向客户端返回数据的流。

在创建时添加 secure:false 选项,问题消失:

以上就是http proxy 对网络请求进行代理使用详解的详细内容,更多关于http proxy 网络请求代理的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

httpproxy对网络请求进行代理使用详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

React Native如何使用axios进行网络请求

本篇内容主要讲解“React Native如何使用axios进行网络请求”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React Native如何使用axios进行网络请求”吧!在前端开发中,能
2023-06-20

PHP中的curl库是如何进行网络请求的?(请解释PHP中curl库进行网络请求的基本用法。)

PHP中的cURL库用于进行网络请求,允许开发人员与远程服务器交互。基本用法包括初始化会话、设置请求选项、执行请求和获取响应信息。cURL支持高级功能,如HTTPS证书处理、会话管理、代理服务器和多路复用,从而提高网络请求的灵活性。
PHP中的curl库是如何进行网络请求的?(请解释PHP中curl库进行网络请求的基本用法。)
2024-04-02

Android中Volley框架进行请求网络数据的使用

问题的阐述:Android SDK中的HttpClient和HttpUrlConnection两种请求方式用来处理网络的复杂的操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等; 解决:Volley就是
2022-06-06

使用spring boot如何对异常请求进行处理

这期内容当中小编将会给大家带来有关使用spring boot如何对异常请求进行处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。404异常处理:@Controllerpublic class ErrorH
2023-05-31

Vue项目的网络请求代理到封装步骤详解

这篇文章主要介绍了Vue项目的网络请求代理到封装步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-18

在Java中怎么利用代理对网络进行连接

在Java中怎么利用代理对网络进行连接?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。需求是这样的:一、界面上要有这样几种代理类型可以选。1.HTTP代理 2.S
2023-05-31

Retrofit网络请求框架之注解解析和动态代理方法怎么使用

本篇内容介绍了“Retrofit网络请求框架之注解解析和动态代理方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Retrofit是
2023-07-05

网红是如何使用代理ip进行网络营销的

本篇内容介绍了“网红是如何使用代理ip进行网络营销的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!许多人也许只听说过ip代理,不知道换ip能
2023-06-25

Android GZip的使用-开发中网络请求的压缩实例详解

Android GZip: gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。一般服务器中都安装有这个功能模块的,服务器端不需做改动。当浏览器支持gzi
2022-06-06

Vue使用axios进行get请求拼接参数的2种方式详解

axios中post请求都是要求携带参数进行请求,这篇文章主要给大家介绍了关于Vue使用axios进行get请求拼接参数的2种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-01-05

编程热搜

目录