前端八股之HTTP

一,负责域名解析的DNS服务

应用层。提供域名到IP地址之间的解析服务。计算机擅长解数字,人类擅长字母配合数字的表达方式

各种协议与HTTP协议的关系

客户端已知http://haker,问DNS这个网址对应的IP地址是什么。得到IP地址后,http协议生成针对web服务器的HTTP请求报文,TCP协议把http请求报文分成多个小段。IP协议搜索对方的地址,一边中转一边传送。TCP协议从对方那里接受到报文合并重组报文段,按照序号以原来的顺序重组请求。HTTP协议对web服务器请求的内容处理。然后服务器请求的处理结果也按照TCP/IP协议向用户进行回传

URI和URL

统一资源标识符,统一资源定位符。url是使用web浏览器等访问web页面时需要输入的网页地址

不是所有的应用程序都符合RFC

二,HTTP/1.1版本

HTTP协议用于客户端和服务器端之间的通信
通过请求和响应的交换达成通信,请求必定由客户端发出,而服务器回复响应

GET表示请求访问服务器的类型,方法。

请求报文:请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成
响应报文:协议版本,状态码(表示请求成功或失败的数字代码),用以解释状态码的原因短语,可选的响应首部字段以及实体主体构成

接收到请求的服务器,将请求内容的处理结果以响应的形式返回。

状态码,资源实体的主体

HTTP是不保存状态的协议

无状态协议,它不会对发送过的请求和响应做持久化处理

为了保存用户的状态,引入cookie技术

请求URI定位资源

URI特定功能,在互联网任意位置都能访问到(?)

如果不是针对特定资源而是对服务器本身发起请求,用*来代替请求URI

告知服务器意图的HTTP方法
GET:获取资源
POST:传输实体主体
PUT:传输文件

因为http没有验证机制,所以一般也不用,除非Web验证机制配合

HEAD:获得报文首部。

类似与GET,只是不返回报文主体

DELETE:删除文件

与put相反,一般不用

OPTIONS:询问支持的方法
TRACE:追踪路径

不常用,还容易引发XST(跨站追踪)攻击

CONNECT:要求用隧道协议连接代理

使用SSL(安全套接协议)TLS(传输层安全)协议把通信内容加密后经网路隧道传输

使用方法下达命令

方法区分大小写,需要用大写

持久连接节省通信量
持久连接:

只要一端没有明确提出断开连接,则保持TCP连接状态(便于连接后多次请求和响应的交互)

管线化

持久连接使得多数请求以管线化方式发送成为可能

使用Cookie的状态管理

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

Cookie会根据从服务端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端在向服务端发请求时,客户端会自动在请求报文中加入Cookie值后发送出去

三,HTTP报文内的HTTP信息
HTTP报文

报文首部+报文主体。两者中间用空行连接

请求报文及响应报文的结构

请求行,状态行,首部字段,其他(如Cookie)

编码提升传输速率
报文主体和实体主体的差异

报文message:http基本通信中的基本单位,通过HTTP通信传输

实体entity:作为请求或响应的有效荷载数据(补充项)被传输

压缩传输的内容编码
分割发送的分块传输编码

分块传输编码会将实体主体分成多个部分(块),Transfer Coding

发送多种输入的多部份对象集合

MIME多用途因特网邮件扩展机制

获取部分内容的请求范围

指定范围发送的请求叫做范围请求,针对范围请求,响应会返回状态码为206的响应报文

如果服务器端无法响应范围请求,则会返回状态码200 OK和完整的实体内容

内容协商返回最合适的内容

内容相同但语言不太一样,中文和英文。

内容协商机制:

服务器驱动协商,客户端驱动协商,透明协商(结合两端)

四,返回结果的HTTP状态码
状态码告知从服务器端返回的请求结果

1xx正在处理接受的请求

2xx请求正常处理完毕

3xx需要进行附加操作以完成请求

4xx服务器无法处理请求

5xx服务器处理请求出错

2xx成功

200ok正常处理

204 no content

206 客户端进行了范围请求,而服务器成功执行了这部分GET请求

3xx重定向

浏览器需要执行某些特殊的处理以正确处理请求

301

相关推荐
石小石Orz3 小时前
我发现了开发者AI产品营收的新方向
前端·虚拟现实
老马识途2.03 小时前
关于跨域问题的总结
java·前端
别惊醒渔人5 小时前
Vue3 Diff 优化:最长递增子序列 LIS
前端·javascript·vue.js
颜酱5 小时前
07 | 把字段与指标同步到 Qdrant(生成阶段)
前端·人工智能·后端
用户059540174465 小时前
把AI长期记忆测试从手动验证换成pytest,2天揪出11个隐藏Bug
前端·css
lichenyang4536 小时前
从 Vite 空项目到 AIGC 图片工作台:我如何打通生图、任务轮询、生成库与 Canvas 动态特效
前端·人工智能
泡沫冰@6 小时前
上章节中文件的讲解
前端·网络·nginx
进击的丸子7 小时前
APP人脸识别增值版Harmony Demo实操与关键代码解析
前端·程序员·harmonyos
a1117767 小时前
唯美花朵风格的黑胶唱片音乐播放器
前端·css·css3
Hilaku7 小时前
工作 5 年后,决定你薪资上限的究竟是什么?
前端·javascript·程序员