前端八股之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

相关推荐
MegatronKing18 小时前
一个有意思的问题引起了我的反思
前端·后端·测试
鹤归时起雾.19 小时前
CSS属性继承与元素隐藏全解析
前端·css
火星数据-Tina19 小时前
让电竞数据实时跳动:Spring Boot 后端 + Vue 前端的完美融合实践
前端·vue.js·spring boot
fruge19 小时前
前端可视化家庭账单:用 ECharts 实现支出统计与趋势分析
前端·javascript·echarts
IT_陈寒19 小时前
Vue3性能优化实战:5个被低估的Composition API技巧让你的应用快30%
前端·人工智能·后端
嘻嘻哈哈猿人19 小时前
从 0 到 1 实现一个支持 @ 提及用户的输入框组件(Vue3 实战)
前端·vue.js
东土也19 小时前
Vue 项目 Nginx 部署路径差异分析与部署指南
前端
云枫晖19 小时前
Vue3 响应式原理:手写实现 ref 函数
前端·vue.js
合作小小程序员小小店19 小时前
web网页开发,在线%宠物销售%系统,基于Idea,html,css,jQuery,java,ssh,mysql。
java·前端·数据库·mysql·jdk·intellij-idea·宠物
荔枝吖19 小时前
html2canvas+pdfjs 打印html
前端·javascript·html