HTTP协议学习(屈屈老师)
请求报文:
起始行: <method> <request-URL> <version>
请求首部: <header>
请求实体: <entity-body>
响应报文:
起始行: <version> <status> <reason-phrase>
响应首部:<header>
响应实体:<entity-body>
常用状态码:
200、302、304、403、404、502等(下节详细介绍)
首部
通用首部:
请求和响应都可以有
Date: Tue 3 Oct 1974 02:16:00 GMT
说明构建报文的时间和日期
Connection
:允许客户端和服务器指定与请求/响应连接有关的选项
MIME-Version
: 给出了发送端使用的MIME版本
Transfer-Encoding
: 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式
Cache-Control
:用于随报文传送缓存指示。
请求首部:
信息性首部
Clinet-IP
:提供了运行客户端的IP地址
Host
:给出了接收请求的服务器的主机名和端口号
User-Agent
:将发起请求的应用程序名称告知服务器。
- accept首部
Accept
: /客户端希望接收什么数据类型的数据。/表示任意媒体类型
Accept-Charset
:告诉服务器能够发送哪些字符集
Accept-Encoding
:告诉服务器能够发送哪些编码方式
Accept-Language
:告诉服务器能够发送哪些语言
- 条件请求首部
Expect
:允许客户端列出某请求所要求的服务器行为
If-Match
:如果实体标记与文档标记相匹配,就获取这份文档
If-None-Match
:如果提供的实体标记与当前文档的实体标记不相符,就获取这份文档
If-Modified-Since
:除非在某个指定的日期之后资源被修改过,否则就限制这个请求
If-Unmodified-Since
:除非在某个指定的日期后资源没有被修改过,否则就限制这个请求
If-Range
:允许对文档的某个范围进行条件请求
Range
:如果服务器支持范围请求,就请求资源的指定范围。
- 安全请求首部
Authorization
:包含了客户端提供给服务器,以便对其自身进行认证的数据
Cookie
:客户端向服务器传送一个令牌—不是真正的安全首部,但确实隐含了安全功能
响应首部:
Server:Tiki-Hut/1.0
用来告诉客户端它在与一个版本1.0的Tiki-Hut服务器进行交互。
实体首部:用于应对实体主体部分的首部
Content-Type:text/html ; charset = iso-latin-1
告知应用程序,数据是以iso-latin-1字符集表示的HTML文档。
Content-Length: 54
表示实体长度
HTTP抓包工具:
Fiddler:可查看HTTP协议和抓包等
Fiddler学习教程http://blog.csdn.net/ohmygirl/article/details/17846199
优化http连接的方法:
1.Keep-Alive:保持连接,减少开销;复用tcp连接。(由于tcp昂贵)
HTTP 1.0 服务器每次都和客户端连接关闭。(可设置不关闭)
HTTP 1.1服务器每次都和客户端连接关闭。
2.Transfer-Encoding
:传输编码,更快的传输,让用户更快的看到内容
Transfer-Encoding:chunked
;与Content-Encoding
(内容压缩编码)结合
3.缓存最主要的
客户端与服务器之间的对话:
请求->响应->请求->响应过程:Web.gif->Last-Modified->if-Modifed-since->304 not modefied
HTTP/2(2015)
多路复用
头部压缩(增量压缩)
Server Push(客户端发一个请求,服务器端给多个响应)
优先级(js高优先级,图片低优先级)
浏览器刷新的几种方式:
1.Ctrl+F5 强刷,会忽略所有的缓存:Cache-control: no-cache
2.F5 一般的刷新
3.Enter 级别最低的刷新
需要掌握的:
熟练掌握HTTP中常见的请求、响应头;常见状态码;连接过程
推荐书籍:
HTTP权威指南
高性能的浏览器(hight performation。。。)
HTTP/2
屈屈博客HTTP相关