【Node.js】HTTP协议、HTTP的请求报文和响应报文

简介: HTTP 全称为超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传送协议,基于TCP的连接方式,它可以使浏览器更加高效,使网络传输减少。

HTTP协议


HTTP 全称为超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传送协议,基于TCP的连接方式,它可以使浏览器更加高效,使网络传输减少。


HTTP协议就是用于规范客户端浏览器和服务器端以什么样的格式进行通信数据交互,作为应用层的面向对象的协议,HTTP由请求和响应构成,是一个标准的客户端服务器模型,也是一个无状态的协议。


HTTP主要特点


  • 支持客户/服务器模式。
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的由GET、HEAD、POST,每种方法规定了客户与服务器联系的类型不同。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。
  • 无状态:HTTP是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。


HTTP的请求报文和响应报文


当我们打开一个网站,单击F12,进入Network窗口,单击默认头信息选项卡,可以看到格式化后的响应报文和请求报文。如下,Response Headers为响应报文,Request Headers为请求报文。


cec3c4467b114d6c87211aba3afd42c0.png


单击Request Headers右边的view source可以打开要找的请求报文。


8b5173d84464407f8ee6dd084226c448.png


请求报文


一个Http请求报文由请求行、请求消息头、空行和请求体四部分组成,其中空行代表请求头部结束。


请求行


请求行位于请求消息的第一行,它包括三部分,分别是请求方式、资源路径以及所使用的HTTP协议版本,以空格进行划分。


如下,GET是请求方式,“/”是请求路径,“HTTP/1.1”表示协议版本。


HTTP协议中常用的请求方式主要是GET和POST,当用户在浏览器地址栏中直接输入某个URL地址或者单击网页上一个超链接时,浏览器将默认使用GET方式发送请求。如果将网页上的form表单的method属性设置为POST,就会以POST方式发送请求。


1bc6043862154a2894dce1a5e6039ebe.png


请求消息头


请求消息头由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关客户端请求的信息,典型的请求头有:


  • User-Agent:产生请求的浏览器类型
  • Accept:客户端可识别的响应内容类型列表。"*"用于按范围将类型分组,用“ * / *”指示可接受全部类型,用“type/ * ”指示可接受type类型的所有子类型。
  • Accept-Encoding:客户端可接受的编码压缩格式。
  • Accept-Language:客户端可接受的自然语言。
  • Accept-Charset:可接受的应答字符集。
  • Host:请求的主机名,允许多个域名同处一个ip地址,即虚拟主机。
  • connection:连接方式(close或者keepalive)。
  • Cookie:存储于客户端扩展字段,向同一域名的服务器端发送属于该域的cookie。


e1cde76b73ab4b3e89e5e0a1f1d0078f.png


空行


最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。


请求体


请求体的内容就是请求数据,请求数据不在GET方法中使用,而是在POST方法中使用。与请求体相关的最常使用的是包体类型Content-Type和包体长度Content-Length。


响应报文


一个HTTP的响应报文由状态行、响应消息头、空行和响应体四部分组成。


abf74b25616548f4a576f73f5261fdd0.png


响应状态行


响应状态行包括HTTP协议版本、成功或错误的整数代码(状态码)和对状态码进行描述的文本信息,以空格进行划分。

状态代码由3位数字组成,表示请求是否被理解或被满足。HTTP响应状态码的第一个数字定义了响应的类别,后面两位没有具体的分类,第一个数字有5种可能的取值,如下:


  • 1xx:表示请求已接收,需要继续处理。
  • 2xx:表示请求已成功被服务器接收、理解并接受。
  • 3xx:为完成请求,客户端需要进一步细化请求。
  • 4xx:客户端的请求错误。
  • 5xx:服务端出现错误。


HTTP协议常用状态码


状态码 说明
200 表示服务器成功处理了客户端的请求
302 表示请求的资源临时从不同的URL响应请求,但请求者应继续使用原有位置来进行以后的请求。
404 表示服务器找不到请求的资源
500 表示服务器发送错误,无法处理客户端的请求


响应消息头


状态行后紧接着是若干响应消息头, 服务器端通过响应消息头向客户端传递附加信息,包括服务程序名、被请求资源需要的认证方式、客户端请求资源的最后修改时间、重定向地址等信息。响应头包括:


  • Location:Location响应报头域用于重定向接收者到一个新的位置。
  • Server:Server响应报头域包含了服务器用来处理请求的软件信息及其版本。
  • Vary:指示不可缓存的请求头列表。
  • Connection:连接方式。


空行


最后一个响应头部之后是一个空行,发送回车符和换行符,通知服务器以下不再有响应头部。


响应体


响应体就是响应数据,包括服务器返回给客户端的文本信息。


总结


以上就是今天的学习内容啦~

如果有兴趣的话可以订阅专栏,持续更新呢~

咱们下期再见~


954faa23ad664606adb32c6594dc7b03.gif

相关文章
|
17天前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
292 130
|
3月前
|
JavaScript 前端开发 API
Node.js中发起HTTP请求的五种方式
以上五种方式,尽管只是冰山一角,但已经足以让编写Node.js HTTP请求的你,在连接世界的舞台上演奏出华丽的乐章。从原生的 `http`到现代的 `fetch`,每种方式都有独特的风格和表现力,让你的代码随着项目的节奏自由地舞动。
415 65
|
1月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
2月前
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
161 0
|
4月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
139 18
|
4月前
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
116 19
|
4月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
391 20
|
4月前
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
177 1
|
5月前
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
291 3
|
7月前
|
网络协议 安全 网络安全
HTTP与HTTPS协议入门
HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
241 25
HTTP与HTTPS协议入门