HTTP协议用于客户端与服务端之间的通信(应用HTTP协议,必定有一端是客户端,另一端是服务器端),HTTP是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持。但目前使用最广泛的还是HTTP/1.1版本。

参考
HTTP请求头部+响应码
HTTP协议报文解析

http请求报文结构都包含什么

请求头、请求行、请求实体、

1
2
3
4
5
6
7
8
9
10
11
12
//请求头 包含了请求方法、请求资源路径、HTTP协议版本 
GET(POST) /mini.png HTTP/1.1

//请求行 请求首部字段
Host:120.25.226.186:32812 客户端想访问的服务器主机地址
User-Agent:Mozilla/5.0 客户端的类型,客户端的软件环境
Accept:text/html 客户端所能接收的数据类型
Accept-Language:zh-cn 客户端的语言环境
Accept-Encoding:gzip 客户端支持的数据压缩格式

//请求实体 内容实体
name=user&ag=12

http协议常用的状态码

200 – (成功) 服务器成功返回网页
304 – (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
404 – (未找到) 服务器找不到请求的网页。
503 – (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

http头部关于缓存的字段

HTTP控制缓存的字段主要包括
Cache-Control/Pragma
这个HTTP Head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令,如果知道该页面是否为缓存,不仅可以控制浏览器,还可以控制和HTTP相关的缓存或代理服务器。
它可以指定下列可选值:
1、Public:所有内容都将被缓存,在响应头中设置
2、Private:内容只缓存在私有缓存中,在响应头中设置
3、no-cache:所有内容都不会被缓存,在请求头和响应头中设置
4、no-store:所有内容都不会被缓存在缓存或Internet临时文件中,在响应头中设置
5、must-revalidation/proxy-revalidation:如果缓存的内容失效,请求必须发送到服务 器/代理以进行重新验证,在请求头中设置
6、max-age=xxx:缓存的内容将在xxx秒后失效,这个选项只在HTTP1.1中可用,和Last-Modified一起使用时优先级较高,在响应头中设置

(最常用的)Cache-Control请求字段可以被个浏览器很好的支持,而且优先级也比较高,它和其他一些请求字段(如Expires)同时使用时,Cache-Control会覆盖其他字段 Pragma字段的作用和Cache-Control类似,

Pragma:no-cache,他和Cache-cache的作用是一致的。
Expires
Expires通常的使用格式是Expires:Sat,25 Feb 2012 12:22:17 GMT,后面跟着一个日期和时间,超过这个时间后,缓存的内容将失效,浏览器在发送请求之前检查这个页面的字段,看该页面是否已经过期了,如果过期,就向服务端重新发起请求。

Last-Modified/Etag
Last-Modified字段一般用于表示一个服务器上的资源的最后修改时间,资源可以是静态资源,也可以是动态内容,通过这个最后修改时间可以判断当前请求的资源是否是最新的。

一般服务端会在响应头中返回一个Last-Modified字段,告诉浏览器这个页面的最后修改时间,如Last-Modified:Sat, 25 Feb 2012 12:55:04 GMT,浏览器再次请求时在请求头中增加If-Modified-Since:Sat, 25 Feb 2012 12:55:04 GMT字段,询问当前缓存的页面是否是最新。如果是最新的就返回304,告诉浏览器是最新的,服务器也不会传输最新的数据

Etag字段的作用和LastModified字段作用相同,这个字段的作用是让服务端给每个页面分配一个唯一的编号,然后通过这个编号来区分当前页面是否最新。这种方式比较灵活,但是当后端的服务器有多台时比较难以处理。 下图为一个实例

http和https的区别

https协议需要到ca申请证书,一般免费证书很少,需要交费。

http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

HTTP连接是无状态的,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,安全性高于HTTP协议。

http1.0 1.1 2 大致的区别

……..

除此之外暂时想不到其他的了。缓存字段和200、404、304之类非常常用的状态码一定要记住。

× 请我吃糖~
打赏二维码