初识http
Server + Client + HTTP
HTTP(HyperText Transfer Protocol)表示超文本传输协议,是万维网使用的底层协议,这种协议定义了消息的格式和传输方式,以及Web服务器和浏览器应对各种命令应采取的操作。
例如,当你在浏览器中输入URL时,这实际上会向Web服务器发送HTTP命令,指示它获取并传输你所请求的Web页面(如下图)。 控制万维网如何工作的另一个主要标准是HTML,它涵盖了网页的格式和显示方式。
Server和client的交互
1.浏览器发起请求;
2.服务器在 80 端口接收请求;
3.服务器负责返回响应内容;
4.浏览器负责下载响应内容。
其他常用端口:
TCP 21=文件传输;
TCP 80=超文本服务器(Http);
TCP 443=安全服务(HTTPS);
HTTP 的作用是指导浏览器和服务器的沟通。例如,“404 File Not Found”是常见的HTTP状态代码。这意味着Web服务器找不到您请求的文件,您尝试在Web浏览器中加载的网页或其他文档已被移动或删除,或者您输入了错误的URL或文档名称。
HTTPS:
HTTPS表示超文本传输协议安全, 它是HTTP的安全版本。 浏览器和网站之间的通信由传输层安全性(TLS)或其前身安全套接字层(SSL)加密。
HTTP请求
HTTP请求最多包括四个部分: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
561.动词-路径-协议/版本
2.Key: value(value是信息,不是上传的数据)
3.
4.要上传的数据
```
注意:
1.第三部分永远都是一个回车(\n),用于区分第二部分和第四部分
2.动词有 GET(获取); POST(上传); PUT (更新);PATCH(更新); DELETE(删除); HEAD ;OPTIONS 等
3.路径包括查询参数,但不包括锚点(锚点是给html看的)
4.default路径为/
5.第 2 部分中的 Content-Type 标注了第 4 部分的格式
例如:
``` bash
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
```
### Google Developer Tool查看请求内容
``` bash
1.打开 Network
2.地址栏输入网址
3.在 Network 点击,查看 request,点击view source
```

以上是请求的前三部分,如果有第四部分请求,可以在FormData 或 Payload 里看到。
### HTTP响应
HTTP请求包括:
``` bash
1.动词-路径-协议/版本
2.Key: value(value是信息,不是上传的数据)
3.
4.要上传的数据
```
例如:
``` bash
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 2443
Content-Type: text/html
Date: Tue, 10 Oct 2017 09:14:05 GMT
Etag: "5886041d-98b"
Last-Modified: Mon, 23 Jan 2017 13:24:45 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<!DOCTYPE html>
<!--STATUS OK--><html> <head> ……
注意:
状态码:
1开头:消息(100 continue;101 switching;102 processing)
2开头:成功
3开头:重定向:
4开头:请求错误
5开头:服务器错误
第 2 部分中的 Content-Type 标注了第 4 部分的格式;且遵循MIME 规范;
Google Developer Tool查看响应内容
1 | 1.打开 Network |
用 curl 创造一个post请求,并得到响应:
curl -X POST -d “1234567890” -s -v -H – “https://www.baidu.com"
请求的内容为:1
2
3
4
5
6
7
8
9POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Frank: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
1234567890