02-HTTP协议,请求响应报文,状态码

http协议

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则

HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和服务器之间互相通信的规则,HTTP协议分为请求 和响应 两个部分组成。

请求与请求报文

get请求的请求报文详解

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
//--------------------------请求行--------------------------------
// GET 请求方式
// /01.php?username=hucc&password=123456 请求路径+参数(注意点)
// HTTP/1.1 HTTP的版本号
GET /01.php?username=hucc&password=123456 HTTP/1.1

//--------------------------请求头--------------------------------
// Host:主机地址
Host: localhost
// HTTP1.1版本默认开启,建立过连接后,TCP连接不会断开,下次连接可以继续使用(底层,不用管)
Connection: keep-alive
// chrome浏览器自己增加的,不用管
Upgrade-Insecure-Requests: 1
// 浏览器的代理字符串(版本信息)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
// 浏览器端可以接受的类型。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,`*/*`;q=0.8
// 从哪个页面发出的请求
Referer: http://www.study.com/day02/01-login.html
// 检查浏览器支持的压缩方式
Accept-Encoding: gzip, deflate, sdch
// 浏览器支持的语言,优先中文。
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

//----------------------------请求体-------------------------------------
//get请求没有请求体,但是参数会拼接到请求行中

POST请求的请求报文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//-----------------------请求行---------------------------------------------
POST /01.php HTTP/1.1

//-----------------------请求头--------------------------------------------
Host: localhost
Connection: keep-alive
//传递的参数的长度。
Content-Length: 29
Cache-Control: max-age=0
Origin: http:// localhost
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
// 内容类型:表单数据,如果是post请求,必须指定这个属性。
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,`*/*`;q=0.8
Referer: http://localhost/01-login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

//------------------------请求体------------------------------------------
username=hucc&password=123456

GET请求与POST请求的对比

  • GET请求没有请求体,因为GET请求的参数拼接到地址栏中了
  • POST请求有请求体,就是传递的参数
  • POST请求需要指定content-type属性。

响应与响应报文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// ---------------------状态行(响应行)-------------------------------
// HTTP/1.1 HTTP版本
// 200 响应的状态
// 200表示成功
// 304表示读缓存
// 404表示找不到资源
// 500表示服务端错误
HTTP/1.1 200 OK

// ----------------------响应头-----------------------------------------------
Date: Thu, 22 Jun 2017 16:51:22 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Content-Length: 18
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
// 内容类型,告诉浏览器该如何解析响应结果
Content-Type: text/html;charset=utf-8
// -----------------------响应体------------------------------------------------
用户登录成功

谷歌浏览器会对报文进行一定的格式化,看起来虽然不是原生的报文,但是使用起来更加的方便简洁。