【04】http知识点整理

1、HTTP协议

HTTP协议概念

HTTP协议的全称是 超文本传输协议,用于客户端(client)和服务端(server)之间的通信,是基于TCP/IP通信协议来传输数据

TCP/IP协议

客户端与服务器之间数据的发送和返回的,需要创建TCP connection的连接通道进行数据传输
(1) 三次握手:创建TCP连接;本质是确认通信双方收发数据的能力
(2) 四次挥手:关闭TCP连接

HTTP报文

组成:请求行 + 请求/响应头部 + 请求/响应体

http请求报文组成说明
请求行通用头部General
请求头Request Headers
请求体如果post请求的话,则会存在请求体(Requestr Payload),如果是get请求的话,直接是空白的
http响应报文组成说明
请求行通用头部General
响应头Response Headers
响应体服务器返回给客户端的文本信息

2、HTTP状态码

状态码分类说明
1xx服务器收到请求
2xx请求成功
3xx重定向
4xx客户端错误
5xx服务端错误
常见状态码说明
200请求成功
301永久重定向(配合location,浏览器自动处理;浏览器会记住,下次访问时会自动访问重定向地址)
302临时重定向(配合location,浏览器自动处理;浏览器会记住,下次会重新走流程)
304自从上次请求后,请求的网页未修改过,请客户端使用本地缓存
404资源未找到
403没有权限
500服务器错误
504网关超时

3、请求行(通用头部General)

请求行组成说明
Request URL请求的web服务器地址
Request Method请求方式(Get、POST、OPTIONS、PUT、HEAD、DELETE、CONNECT、TRACE)
Status Code请求返回状态码
Remote Address请求的远程服务器地址(会转为IP)

4、http headers(请求\响应头)

常见的Request Headers

名称说明
Accept浏览器可接收的数据格式
Accept-Encoding浏览器支持的压缩算法,如gzip
Content-Type发送数据的格式(post请求)
Connection一次TCP链接重复使用,如keep-alive
Cookie有cookie并且同域访问时会自动带上
Host请求的服务器URL
User-Agent用户浏览器的一些必要信息,如UA头部等
Origin最初的请求是从哪里发起的(只会精确到端口)
Cache-Control指定请求和响应遵循的缓存机制,如no-cache(强制使用协商缓存)、max-age(设置缓存存储的最大周期,超过这个时间缓存被认为过期)、no-store(禁止使用任何缓存)、private(私有缓存,中间代理服务端不可缓存资源)、public(公共缓存,中间代理服务端可以缓存资源)
If-Modified-Since对应服务端的Last-Modified,用来匹配看文件是否变动,只能精确到1s之内
If-None-Match对应服务端的ETag,用来匹配文件内容是否改变(非常精确)

常见的Response Headers

名称说明
Access-Control-Allow-Headers服务器端允许的请求Headers
Access-Control-Allow-Methods服务器端允许的请求方法
Access-Control-Allow-Origin服务器端允许的请求Origin头部(譬如为*)
Content-Type服务端返回的数据内容的格式(如image/jpeg、application/json等)
Content-encoding返回数据的压缩算法,如gzip
Set-Cookie设置和页面关联的cookie,服务器通过这个头部把cookie传给客户端
Date数据从服务器发送的时间
Server服务器的一些相关信息
Expires时间戳,发起请求时,如果本地系统时间在这个时间戳之前,则缓存有效,否则缓存失效,进入协商缓存。
Cache-Control指定请求和响应遵循的缓存机制,如no-cache(强制使用协商缓存)、max-age(设置缓存存储的最大周期,超过这个时间缓存被认为过期)、no-store(禁止使用任何缓存)、private(私有缓存,中间代理服务端不可缓存资源)、public(公共缓存,中间代理服务端可以缓存资源)
Last-Modified资源的最后修改时间
ETag资源的唯一标识

缓存

什么是缓存?浏览器将一些静态资源缓存到本地,再次请求时,不再重新获取;这样可以缓存减少网络请求的体积和数量,可以缓解服务器或数据库的压力,比如 js、css、image等静态资源可以被缓存

http缓存策略分为 协商缓存 和 强制缓存两种

浏览器发起资源请求后,大致有三部分:强缓存校验、协商缓存校验、资源请求。强缓存由HTTP的三个头部字段来控制:Expires、Pragma、Cache-Control。当强缓存过期或者请求头字段设置不走强缓存,比如Cache-Control:no-cache,则进入协商缓存部分。协商缓存涉及两对头部字段,分别是Last-Modified/If-Modified-Since、和ETag/If-None-Match。

在这里插入图片描述

http强制缓存

客户端缓存策略,由客户端根据 http headers 中的 Expires、Pragma、Cache-Control 判断是否使用本地缓存资源

过程:
1> 浏览器初次请求服务端时,如果服务端判定该资源需要缓存,会返回客户端资源和cache-control
2> 浏览器再次请求服务器获取该资源时,客户端根据cache-control判断是否使用本地缓存资源
3> 如果cache-control的时间在有效期内,会直接去本地缓存中获取资源,不再请求服务端
4> 如果cache-control的时间失效了,浏览器会重新请求服务端,再次返回资源和cache-control

http协商缓存

服务端缓存策略,由服务端通过 http headers 中的 Last-Modified/If-Modified-Since、和ETag/If-None-Match来判断是本次请求否可以使用本地资源

过程:
1> 浏览器初次请求服务端时,如果服务端判定该资源需要缓存,会返回客户端 资源 和 资源标识
2> 浏览器再次请求服务器获取该资源时,带上 资源标识(If-Modified-Since 或 If-None-Match);服务端根据 资源标识 判断客户端是否可以使用本地缓存中的资源
3> 如果可以返回状态码304,使用本地资源
4> 否则返回状态码200 和 最新资源+资源标识

资源标识:
Last-Modified 对应 If-Modified-Since (只能精确到1s之内)
ETag 对应 If-None-Match(推荐使用,非常精确)

刷新操作对缓存影响

(1) 正常操作:地址栏输入url、跳转链接、前进后退 (强制缓存有效,协商缓存有效)
(2) 手动刷新:F5、点击刷新按钮、右击菜单刷新 (强制缓存失效,协商缓存有效)
(3) 强制刷新:ctrl+F5 (强制缓存失效,协商缓存失效)

5、GET 和 POST 的区别

GET 和 POST 是HTTP协议中的两种请求方式,本质上都是TCP链接,并无差别

区别:

(1) get是从服务器上获取数据,post是向服务器传送数据
(2) get请求的数据可以被缓存,post不能被缓存
(3) get安全性差,post比get更安全 (数据是url一部分,对所有人都可见;post请求数据不会保存在浏览器历史和web服务器日志中,数据不会显示在url中)
(4) GET通过url传输参数,POST通过request body传递参数
(5) GET请求时对数据长度有限制,POST请求对数据长度没有限制 (http协议并没有对数据长度做限制,而某些特定浏览器和服务器或对 url长度 有限制)
(6) GET产生一个TCP数据包,POST产生两个TCP数据包(部分浏览器框架,不属于post必然行为)

get请求 http header和data 会一次发送出去,服务器响应200返回数据
post请求先发送header,服务器响应100 continue;再发送data,服务器响应200返回数据

安全性:

因为http是明文传输的,所以从传输角度来说,get和post都是不安全的(只要在网络节点上捉包,就能完整地获取数据报文)

通过加密来进行安全传输,https

6、输入url到页面加载全过程

过程说明:

(1) 客户端连接到web服务器

1> 获取主机名,例如:http://www.nowamagic.net
2> 根据DNS解析服务器IP,121.199.24.143(域名 -> IP地址)
3> 获取端口,默认是80端口
4> 连接到 121.199.24.143:80服务器

(2) 通过TCP信道发送HTTP请求
(3) 服务器收到请求并通过TCP信道返回http响应
(4) 释放连接

1> 如果是短连接,服务器响应之后直接释放
2> 如果是长连接(Connection:keep-alive),会在一定时间之后释放连接

(5). 客户端解析返回的数据

1> 根据HTML代码生成 DOM Tree,根据CSS代码生成 CSSOM;两者合并生成Render Tree
2> 根据Render Tree渲染页面 (重排+重绘)
3> 如果遇到<script>暂停渲染,先加载并执行js代码,然后继续渲染
4> 直至Render Tree渲染完成

总结:

域名解析为ip,并连接到服务器
建立TCP连接后发起http请求
服务器响应http请求,浏览器得到html代码
释放连接
浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
浏览器对页面进行渲染呈现给用户

7、HTTPS

HTTPS协议是基于 SSL + HTTP协议 构建的可以加密传输、身份认证的网络协议;是HTTP的安全版

SSL证书需要花钱认证

HTTP 与 HTTPS 的区别:
(1) http的url是 http:// 开头,https的url是 https://开头
(2) http的默认端口是80,https的默认端口是443
(3) http是超文本传输协议,传输时明文传输,https是具有安全性的 SSL加密传输协议
(4) http无需证书,https需要 CA机构 颁发的 SSL证书 (收费)
(5) http是不安全的,https是安全的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值