Uniform Resource locator
基本语法:
://:@:/;?#
params:参数
query:查询
frag:锚定,表示指定页面中的某个位置
各种解释:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html
http/0.9 http/1.0 http/1.1 http/2.0
connectionless
HTTP client建立HTTP请求后就会断开和server的链接并等待HTTP响应;server处理了HTTP请求之后就和client重新建立链接并发送HTTP响应。也就是说,每次连接只能处理一个请求。
media independent
表示HTTP允许传输任意类型的数据对象(MIME-Type),正在传输的类型由Content-Type加以标记。
stateless
无连接表示HTTP协议中的client和server只会在请求的过程中知道对方的存在,一旦请求完成,client和server互不知道彼此的状态。比如用户已经获得了一个页面,但是刷新的时候,server并不知道client已经拥有了这个页面,所以server会乐此不疲地重新传送响应。
由于HTTP协议的无状态性,随着web的发展,server有了需要知道client端状态的需求,cookie和session就是解决这种问题的两种机制
cookie即在client发送第一个请求后,server处理request的过程中,返回response+cookie,在下一次client向server发送请求的时候,会发送request+cookie,这样server就知道了client的状态。
session即server端保存client的状态信息
request报文
response报文
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-uqo3{background-color:#efefef;text-align:center;vertical-align:top}
.tg .tg-xgs0{background-color:#26ade4;text-align:center;vertical-align:top}
.tg .tg-wyy1{background-color:#26ade4;text-align:center}
.tg .tg-j4kc{background-color:#efefef;text-align:center}
method | version | ||||||
---|---|---|---|---|---|---|---|
GET | HEAD | POST | PUT | DELETE | TRACE | OPTIONS | HTTP/major.minor |
从服务器获取一个资源 | 只从服务器获取文档的响应首部 | 向服务器发送要处理的数据 | 将请求的主体部分存储在服务器上,这种方法很危险 | 请求删除服务器上指定的文档 | 追踪请求到达服务器中间经过的代理服务器 | 请求服务器返回对指定资源支持使用的请求方法 | HTTP/1.1 |
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-uqo3{background-color:#efefef;text-align:center;vertical-align:top}
.tg .tg-xgs0{background-color:#26ade4;text-align:center;vertical-align:top}
.tg .tg-baqh{text-align:center;vertical-align:top}
.tg .tg-wyy1{background-color:#26ade4;text-align:center}
.tg .tg-j4kc{background-color:#efefef;text-align:center}
status | reason-phrase | entity-body | ||||
---|---|---|---|---|---|---|
1xx | 2xx | 3xx | 4xx | 5xx | 状态码所标记的状态的简要描述 | 请求附加的数据或响应时附加的数据 |
信息提示,请求接受,需要继续处理 | 请求已成功被服务器接收、理解、并接受 | 重定向:需要客户端采取进一步的操作才能完成请求 | 错误类信息,客户端错误 | 错误类信息,服务器端错误 | 比如:很抱歉,您要访问的页面不存在! | 请求服务器返回对指定资源支持使用的请求方法 |
200 OK202 ACCEPT 301 Moved Permanently302 Move temporarily 400 Bad Request404 Not Found 502 Bad Gateway |
协议查看或分析的工具:
tcpdump、tshark、wireshark
format: Name: Value
通用首部:
Date: 报文的创建时间
Connection:连接状态,如keep-alive, close
Via:显示报文经过的中间节点
Cache-Control:控制缓存
Pragma:用于兼容HTTP不同版本协议
请求首部:
Accept:通过服务器,client可接受的媒体类型;
Accept-Charset:通过服务器,client可接受的字符集
Accept-Encoding:接受编码格式(压缩等),如gzip
Accept-Language:接受的语言
Client-IP: client的IP地址
Host: 请求的服务器名称和端口号
Referer:包含当前正在请求的资源的上一级资源;表示从哪里引用而来
User-Agent:客户端代理,即浏览器类型,比如手机查看的页面和PC的就不一样
-
条件式请求首部:
Expect:期望得到的信息
If-Modified-Since:自从指定的时间之后,请求的资源是否发生过修改;这个可以用于浏览器缓存,如果没有修改就可以不刷新缓存等
If-Unmodified-Since:自从指定的时间之后,请求的资源是否没有发生过修改;
If-None-Match:本地缓存中存储的文档的ETag标签是否与服务器文档的Etag不匹配;
If-Match:本地缓存中存储的文档的ETag标签是否与服务器文档的Etag匹配;
-
安全请求首部:
Authorization:向服务器发送认证信息,如账号和密码;
Cookie: 客户端向服务器发送cookie
Cookie2:客户端向服务器发送cookie2
-
代理请求首部:
Proxy-Authorization: 向代理服务器认证
-
响应首部:
信息性:
Age:响应持续时长
Server:服务器程序软件名称和版本
-
协商首部:某资源有多种表示方法时使用
Accept-Ranges:服务器可接受的请求范围类型
Vary:服务器查看的其它首部列表;
-
安全响应首部:
Set-Cookie:向客户端设置cookie;
Set-Cookie2: 向客户端设置cookie2
WWW-Authenticate:来自服务器的对客户端的质询认证表单
实体首部:
Allow: 列出对此实体可使用的请求方法
Location:告诉客户端真正的实体位于何处
Content-Encoding:主体的编码格式
Content-Language:主体的语言
Content-Length: 主体的长度
Content-Location: 实体真正所处位置;
Content-Type:主体的对象类型
缓存相关:
ETag:实体的扩展标签;
Expires:实体的过期时间;
Last-Modified:最后一次修改的时间