【前端 · 面试 】HTTP 总结(二)—— HTTP 消息

简介: 最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流

最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流。


争取每个知识点能够多总结一些,至少要做到在面试时,针对每个知识点都可以侃起来,不至于哑火。


13.png


前言


在上一篇文章《HTTP 概述》中我们认识了 HTTP ,知道它是一个规范客户端请求和服务端响应的应用层协议,今天,我们来学习一下它里面的另一个重要概念——HTTP 消息。


HTTP 消息


HTTP 消息是服务器和客户端之间交换数据的方式。


分类


HTTP 消息分为两类:


  • 客户端请求消息(requests)—— 由客户端发送用来触发一个服务器上的动作。
  • 服务端响应消息(responses)—— 来自服务器的应答。


构成


12.png


典型的 HTTP 消息由以下四部分构成:


  • 起始行(start line) —— 一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。
  • HTTP 头(HTTP  headers)—— 表示在 HTTP 请求或响应中的用来传递附加信息的字段,修改所传递的消息(或者消息主体)的语义,或者使其更加精确。
  • 空行(empty line) —— 空行指示所有关于请求的元数据已经发送完毕。
  • 数据体(body)—— 一个可选的包含请求相关数据的正文 (比如HTML表单内容), 或者响应相关的文档。


请求消息和响应消息的构成大体相同。


HTTP 头字段


HTTP 头字段(HTTP header fields)是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分。


它们定义了一个超文本传输协议事务中的操作参数。


HTTP 头部字段可以自己根据需要定义,因此可能在 Web 服务器和浏览器上发现非标准的头字段。


格式


HTTP 头字段是在请求(request)或响应(response)行(一条消息的第一行内容)之后传输的。


协议头的字段特点是:


  • 以明文的字符串格式传输
  • 是以冒号分隔的键名与键值对
  • 以回车(CR)加换行(LF)符号序列结尾
  • 协议头部分的结尾以一个空白字段标识,也就是传输两个连续的 CR + LF。


分类


HTTP 头字段根据实际用途被分为以下 4 种类型:


  • 通用头字段(General Header Fields)
  • 请求头字段(Request Header Fields)
  • 响应头字段(Response Header Fields)
  • 实体头字段(Response Header Fields)


11.png


通用头字段


10.png


请求头字段


9.png


响应头字段


字段值


某些字段中可以包含注释内容(例如User-Agent、Server和Via字段中),这些注释内容可由应用程序忽略。


很多字段的值中可以包含带有权重的质量(quality,常被简称为Q)的键值对,指定的“重量”会在内容协商的过程中使用。


大小限制


标准中没有对每个协议头字段的名称和值的大小设置任何限制,也没有限制字段的个数。


然而,出于实际场景及安全性的考虑,大部分的服务器、客户端和代理软件都会实施一些限制。


例如,Apache 2.3服务器在默认情况下限制每个字段的大小不得超过8190字节,同时,单个请求中最多有100个头字段。


总结


HTTP 消息分为请求消息和响应消息,完整的消息由四部分组成。


HTTP 头可以分为四类。


~ 本文完,感谢阅读!


学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!


你来,怀揣期望,我有墨香相迎! 你归,无论得失,唯以余韵相赠!


知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!




相关文章
|
18天前
|
存储 前端开发 JavaScript
前端面试题23-34
通过对 Promise 和 ECMAScript6 的深入理解,可以更好地应对现代 JavaScript 开发中的复杂异步操作和新特性,提升代码质量和开发效率。
17 2
|
5天前
|
缓存 网络协议 安全
Android网络面试题之Http基础和Http1.0的特点
**HTTP基础:GET和POST关键差异在于参数传递方式(GET在URL,POST在请求体),安全性(POST更安全),数据大小限制(POST无限制,GET有限制),速度(GET较快)及用途(GET用于获取,POST用于提交)。面试中常强调POST的安全性、数据量、数据类型支持及速度。HTTP 1.0引入了POST和HEAD方法,支持多种数据格式和缓存,但每个请求需新建TCP连接。**
20 5
|
4天前
|
缓存 网络协议 Android开发
Android网络面试题之Http1.1和Http2.0
HTTP/1.1 引入持久连接和管道机制提升效率,支持分块传输编码和更多请求方式如PUT、PATCH。Host字段指定服务器域名,RANGE用于断点续传。HTTP/2变为二进制协议,实现多工处理,头信息压缩和服务器推送,减少延迟并优化资源加载。HTTP不断发展,从早期的简单传输到后来的高效交互。
14 0
Android网络面试题之Http1.1和Http2.0
|
13天前
|
存储 缓存 监控
2024春招小红书前端面试题分享
2024春招小红书前端面试题分享
36 3
|
18天前
|
前端开发 JavaScript 虚拟化
前端面试题12-22
ES6(ECMAScript 2015)是 JavaScript 的重要版本,引入了许多新特性和语法,提升了语言的功能和可用性。ES6 的主要特性包括箭头函数、类、模板字符串、解构赋值、默认参数、Promise、模块化、Generator 函数、async 函数、Proxy 和 Reflect 等。这些特性不仅简化了代码的编写和维护,还为开发者提供了更多的编程范式和工具。了解和掌握 ES6 的特性是现代 JavaScript 开发的必备技能。
10 1
|
18天前
|
JSON 前端开发 JavaScript
前端面试题01-11
Map是ES6引入的一种新的键值对集合数据结构,类似于对象,但键的范围不限于字符串,还可以是任何类型的值。Map保持键值对的插入顺序,提供更灵活的键值对操作方法,如`set()`、`get()`、`delete()`、`has()`等。
12 1
|
2天前
|
存储 缓存 前端开发
谈谈前端面试中遇到的问题(一)
谈谈前端面试中遇到的问题(一)
|
2天前
|
Web App开发 存储 前端开发
技术心得记录:前端面试题汇总
技术心得记录:前端面试题汇总
|
3天前
|
缓存 前端开发 JavaScript
中高级前端面试秘籍,助你直通大厂(一)
中高级前端面试秘籍,助你直通大厂(一)
|
13天前
|
算法 前端开发 安全
面试官:前端加密怎么做?这,这,这不是后端的活儿吗?
前端加密技术概述: 前端加密主要用来保护数据在传输过程中的安全,但因浏览器环境开放性,仅能提供有限的安全性,真正安全策略需结合服务器端加密和安全协议。