【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

相关文章
|
8月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
837 130
|
7月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
9月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
857 2
|
9月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
614 0
|
9月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
423 0
|
9月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
755 0
|
XML 缓存 算法
HTTP协议详解
HTTP协议详解
1505 1
HTTP协议详解
|
Web App开发 网络协议 .NET
第206天:http协议终极详解---看这一篇就够了
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
3976 0
|
Web App开发 缓存 前端开发
HTTP协议详解
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。
1498 0
|
Web App开发 缓存 网络协议

热门文章

最新文章