-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy path081http协议
More file actions
100 lines (68 loc) · 3.89 KB
/
Copy path081http协议
File metadata and controls
100 lines (68 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
一. url的组成部分
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
传输协议 + 域名 + 端口 + 虚拟目录 + 文件名 + 参数 + 锚部分
传输协议:若URL的协议部分为“http:”,这代表网页使用的是HTTP协议。
域名:也可以使用IP地址作为域名
端口:若不写端口,则采用默认端口
二. http协议
超文本传输协议,保证客户端和服务端的通信。
三. HTTP请求报文和响应报文
http的报文都是纯文本。报文主要包括三部分:请求行、请求头部、消息主体
1. http请求报文
请求行(request line)
请求头部(header)
空行: 告诉服务器一下不再有请求头
请求数据
请求行:请求方法字段、URL字段、HTTP协议版本字段
eg:
GET /tools.html HTTP/1.1
- 请求方法:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
- URL字段
- HTTP协议版本:HTTP/1.1
请求头部:关键字/值组成,每行一对
例如:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
空行:告诉服务器一下不再有请求头
请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。
POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
2. http响应报文
状态行
消息报头
空行:告诉服务器一下不再有请求头
响应数据
状态行:HTTP协议版本、状态码、状态码的文本描述
`eg: HTTP/1.0 200 OK`
消息报头:关键字/值组成,每行一对
eg:
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122
响应数据:返回给客户端的数据
3. 状态码的意思
1XX: 消息
2XX: 请求成功
3XX: 请求重定向
4XX: 客户端错误
5XX: 服务器错误
几个常见的状态码:
200 OK:客户端请求成功。
3XX:请求重定向
301 所请求的页面已经转移至新的url,永久性转移,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址
302 所请求的页面已经临时转移至新的url,暂时性转移,搜索引擎会抓取新的内容而保留旧的网址
304 未按照预期修改文档。可以使用缓存的文档。
304触发的条件:本地的缓存文件和服务器上的文件的最后一次修改时间一致,则触发http状态码返回304
客户端有缓存的文档
发出了一个条件性的请求(一般是提供If-Modified-Since头表示上一次获取的文件的修改时间)。
服务器告诉客户,原来缓冲的文档还可以继续使用。
If-Modified-Since http请求头部 存放的是浏览器中缓存页面的最近一次的修改时间
在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。
如果时间一致,那么返回HTTP状态码304(不返回文件内容),客户端接到之后,就直接把本地缓存文件显示到浏览器中。
如果时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示到浏览器中。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。