node.js内置模块之---http 和 https 模块

http 和 https 模块的作用

Node.js 中,httphttps 模块用于创建和处理 HTTP 和 HTTPS 请求/响应

http模块

http 模块提供了用于实现 HTTP 协议的功能。它可以用来创建 HTTP 服务器,处理 HTTP 请求,发送 HTTP 响应,同时也可以用来发送 HTTP 客户端请求。

创建 HTTP 服务器

使用 http.createServer() 方法可以创建一个 HTTP 服务器,该服务器可以监听 HTTP 请求并返回响应。

const http = require('http');// 创建一个 HTTP 服务器
const server = http.createServer((req, res) => {// 设置响应头res.writeHead(200, { 'Content-Type': 'text/plain' });// 返回响应res.end('Hello, HTTP!');
});// 监听 3000 端口
server.listen(3000, () => {console.log('Server is running at http://localhost:3000');
});
  • req: 请求对象,包含有关客户端请求的信息(例如 URL、请求头、查询参数等)。
  • res: 响应对象,用来发送响应给客户端。通过 res.writeHead() 设置 HTTP 状态码和响应头,使用 res.end() 发送响应数据。
处理 HTTP 请求

可以使用 req 对象来处理请求,获取请求的相关信息。

const http = require('http');const server = http.createServer((req, res) => {// 获取请求方法(GET, POST 等)const method = req.method;// 获取请求的 URLconst url = req.url;console.log(`Method: ${method}, URL: ${url}`);// 响应处理res.writeHead(200, { 'Content-Type': 'text/plain' });res.end('Request received');
});server.listen(3000, () => {console.log('Server is running on http://localhost:3000');
});
发送 HTTP 请求

使用 http.request() 方法可以发送 HTTP 请求。这可以用于与其他 HTTP 服务进行通信。

const http = require('http');const options = {hostname: 'example.com',port: 80, // 默认的 HTTP 端口path: '/',method: 'GET'
};const req = http.request(options, (res) => {let data = '';res.on('data', (chunk) => {data += chunk;});res.on('end', () => {console.log(data);});
});req.on('error', (e) => {console.error(`Problem with request: ${e.message}`);
});req.end();
  • options: 请求的配置,包括目标服务器的地址、端口、请求方法等。
  • res: 响应对象,用于处理服务器的响应数据。

https 模块

https 模块提供了与 http 模块类似的功能,但它使用 SSL/TLS 加密 来保证数据传输的安全性。通常在涉及到敏感数据(如用户名、密码、支付信息等)的应用中,需要使用 HTTPS 来加密通信。

创建 HTTPS 服务器

与 HTTP 服务器类似,HTTPS 服务器需要提供 SSL/TLS 证书(公钥和私钥),以便在建立连接时加密通信。

const https = require('https');
const fs = require('fs');// 读取 SSL 证书和私钥
const options = {key: fs.readFileSync('path/to/private-key.pem'),cert: fs.readFileSync('path/to/certificate.pem')
};const server = https.createServer(options, (req, res) => {res.writeHead(200, { 'Content-Type': 'text/plain' });res.end('Hello, HTTPS!');
});server.listen(3000, () => {console.log('HTTPS server is running on https://localhost:3000');
});
  • key: 私钥文件(通常是 .pem 格式)。
  • cert: 公钥证书文件(通常是 .pem 格式)。
  • options:这些选项用于配置加密通信。
发送 HTTPS 请求

HTTPS 客户端请求与 HTTP 相似,区别在于使用 https.request() 发送加密请求。

const https = require('https');const options = {hostname: 'example.com',port: 443,  // 默认的 HTTPS 端口path: '/',method: 'GET'
};const req = https.request(options, (res) => {let data = '';res.on('data', (chunk) => {data += chunk;});res.on('end', () => {console.log(data);});
});req.on('error', (e) => {console.error(`Problem with request: ${e.message}`);
});req.end();

http 和 https 模块的区别

特性http 模块https 模块
协议非加密的 HTTP 协议加密的 HTTPS 协议
端口默认使用端口 80默认使用端口 443
安全性不加密数据,容易遭受中间人攻击加密通信,保护数据隐私
证书不需要证书需要 SSL/TLS 证书
应用场景公共内容、测试环境需要保护用户数据的应用(如银行、支付系统)

使用 https 和 http 模块时的注意事项

  • 证书:使用 https 时,必须提供有效的 SSL/TLS 证书。可以通过自签名证书进行开发,但生产环境必须使用可信的证书(例如来自 Let's Encrypt、VeriSign 等)。
  • 性能https 通常比 http 稍慢,因为它涉及到加密/解密操作。在不需要加密的场景下,尽量使用 http
  • 安全:在生产环境中,尤其是涉及敏感信息的情况下,必须使用 HTTPS 来加密通信,防止数据被窃听或篡改。

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

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

相关文章

【数据结构】链表(2):双向链表和双向循环链表

双向链表(Doubly Linked List) 定义: 每个节点包含三个部分: 数据域。前驱指针域(指向前一个节点)。后继指针域(指向下一个节点)。 支持从任意节点向前或向后遍历。 #define dat…

RK3588+麒麟国产系统+FPGA+AI在电力和轨道交通视觉与采集系统的应用

工业视觉识别系统厂家提供的功能主要包括: 这些厂家通过先进的视觉识别技术,实现图像的采集、处理与分析。系统能够自动化地完成质量检测、物料分拣、设备监控等任务,显著提升生产效率和产品质量。同时,系统具备高度的灵活性和可扩…

3 抢红包系统

我们还是按照我们分析问题的方法论开展 一 场景分析 我们分析的是集体活动的抢红包,比如春晚,大型活动红包,需要在网页操作的抢红包 抢红包的问题也是多个人抢资源的问题,可以和秒杀进行比对。但是也有很多不同的地方。 用户打…

数据库中的并发控制

并发操作带来的数据不一致性 1、并发控制:为了保证事务的隔离性和一致性,数据库管理系统需要对并发操作进行正确调度 并发控制的主要技术有:封锁、时间戳、乐观控制法、多版本并发控制等 并发操作带来的数据不一致性: ① 丟失修改:两个事务 T1 和 T2 读入同一数据…

ArcGIS Server 10.2授权文件过期处理

新的一年,arcgis server授权过期了,服务发不不了。查看ecp授权文件,原来的授权日期就到2024.12.31日。好吧,这里直接给出处理方法。 ArcGIS 10.2安装时,有的破解文件中会有含一个这样的注册程序,没有的话&…

学英语学压测:02jmeter组件-测试计划和线程组ramp-up参数的作用

📢📢📢:先看关键单词,再看英文,最后看中文总结,再回头看一遍英文原文,效果更佳!! 关键词 Functional Testing功能测试[ˈfʌŋkʃənəl ˈtɛstɪŋ]Sample样…

MCGS学习记录

软件包 用户窗口 主窗口 元件:工具箱->输入框上面 数据对象 在工作台的实时数据库可以新增数据对象 理解为中间变量,控件改变其值,控件监测其值做出变化 基本属性 设定变量名和初始值 指针化? 变化时自动保存初始值&#x…

【网络协议】IPv4 地址分配 - 第一部分

文章目录 十进制与二进制网络如何被寻址地址类型网络地址广播地址主机地址 如何确定网络和主机部分的位数?网络中的主机数量与前缀号的关系计算每个前缀的主机数量公式 子网掩码二进制与操作(Binary ANDing)与操作(AND Operation&…

数据挖掘——集成学习

数据挖掘——集成学习 集成学习Bagging:有放回采样随机森林 BoostingStacking 集成学习 集成学习(Ensemble learning)方法通过组合多种学习算法来获得比单独使用任何一种算法更好的预测性能。 动机是为了提高但分类器的性能 Bagging&…

ansible-性能优化

一. 简述: 搞过运维自动化工具的人,肯定会发现很多运维伙伴们经常用saltstack和ansible做比较,单从执行效率上来说,ansible确实比不上saltstack(ansible使用的是ssh,salt使用的是zeromq消息队列[暂没深入了解]),但其实…

NLP CH10 问答系统复习

1. 专家系统 特点 问题聚焦:限定在特定领域。数据结构化:使用结构化的领域知识。数据库支持:后台有一个数据库,保存系统可提供的各种数据。查询机制:用户提问时,系统将问题转换为 SQL 查询语句&#xff0…

vite6+vue3+ts+prettier+eslint9配置前端项目(后台管理系统、移动端H5项目通用配置)

很多小伙伴苦于无法搭建一个规范的前端项目,导致后续开发不规范,今天给大家带来一个基于Vite6TypeScriptVue3ESlint9Prettier的搭建教程。 目录 一、基础配置1、初始化项目2、代码质量风格的统一2.1、配置prettier2.2、配置eslint2.3、配置typescript 3、…

【2025年最新】OpenWrt 更换国内源的指南(图形界面版)

在上一篇文章中我们讲解了如何使用命令行更换国内源,如果你没有终端工具,或者不喜欢命令行,那么图形界面方式将会是更简单有效的方式。 命令行版本:【2025年最新】OpenWrt 更换国内源的指南(命令行)-CSDN博客 为什么选择通过图形…

uni-app:实现普通选择器,时间选择器,日期选择器,多列选择器

效果 选择前效果 1、时间选择器 2、日期选择器 3、普通选择器 4、多列选择器 选择后效果 代码 <template><!-- 时间选择器 --><view class"line"><view classitem1><view classleft>时间</view><view class"right&quo…

NVIDIA DLI课程《NVIDIA NIM入门》——学习笔记

先看老师给的资料&#xff1a; NVIDIA NIM是 NVIDIA AI Enterprise 的一部分&#xff0c;是一套易于使用的预构建容器工具&#xff0c;目的是帮助企业客户在云、数据中心和工作站上安全、可靠地部署高性能的 AI 模型推理。这些预构建的容器支持从开源社区模型到 NVIDIA AI 基础…

深度学习中的步数指的是什么

Lora微调的截图如下: 在深度学习中,步数(steps) 是指模型参数更新的次数。每次参数更新通常对应一个或多个批次的梯度计算和优化器更新。以下是计算总步数的方法以及步数的具体含义: 1. 步数的计算公式 总步数(Total Optimization Steps)可以通过以下公式计算: [ \te…

【可实战】测试用例组成、用例设计方法、用例编写步骤、测试用例粒度、用例评审(包含常见面试题)

一、测试用例组成 &#xff08;一&#xff09;测试用例的组成 用例编号&#xff0c;模块&#xff0c;测试点&#xff08;测试标题&#xff09;&#xff0c;优先级&#xff0c;前提条件&#xff0c;测试步骤&#xff0c;期望结构&#xff0c;实际结果并不是每一项都必须&#…

Redis两种主要的持久化方式是什么?

Redis支持两种主要的持久化方式&#xff0c;它们分别是RDB&#xff08;Redis Database Snapshotting&#xff09;和AOF&#xff08;Append Only File&#xff09;。以下是这两种持久化方式的详细介绍&#xff1a; 一、RDB&#xff08;Redis Database Snapshotting&#xff09; …

【强化学习】演员评论家Actor-Critic算法(万字长文、附代码)

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…

《新概念模拟电路》-电流源电路

电流源电路 本系列文章主要学习《新概念模拟电路》中的知识点。在工作过程中&#xff0c;碰到一些问题&#xff0c;于是又翻阅了模电这本书。我翻阅的是ADI出版的&#xff0c;西安交通大学电工中心杨建国老师编写的模电书。 本文主要是基于前文《新概念模拟电路》-三极管的基础…