一 HTTP
HTTP(hypertext transport protocol), 超文本传输协议。这个协议规定了浏览器(客户端)和万维网服务器之间的通信规则。
HTTP规定给了浏览器和万维网服务器互相传输内容的格式。即请求协议、响应协议。
特点:
1.HTTP是基于请求/响应模式的;
2.HTTP是无状态协议;
注意:
1. HTTP是没有记忆能力的,如果需要记录信息需要适用Cookie或者Session;
2. HTTP是应用层协议,是无状态面向连接的协议,但HTTP可以保持连接并且不是UDP协议;
3. HTTP从1.1版本开启了Keep-Alive用来保持连接,但是有一定时间的;
二 请求协议
格式:
请求首行;包括:方式、路径、协议和版本;
请求头信息;包括:头名称、头内容;
空行;就是用来将上面的信息与下面的请求体分隔开;
请求体;GET方式没有请求体,POST有请求体;
2.1 GET请求
HTTP默认的请求方式就是GET方式
特点:
a. 没有请求体;
b. 数据必须在1K之内;
c.GET请求数据会暴露在浏览器的地址栏中,不安全;
常用GET请求的操作:
a. 在浏览器中的输入URL访问服务器,GET方式;
b.点击页面上的超链接,GET方式;
c.在适用form表单向服务器传输数据时,表单方法选用GET,则GET方式;
Request URL: https://www.baidu.com/
Request Method: GET
Status Code: 200 OK
Remote Address: 39.156.66.14:443
Referrer Policy: no-referrer-when-downgrade
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BAIDUID=C677D5BFFEE347092A84FB4B9E7BFFB0:FG=1; BIDUPSID=C677D5BFFEE347092A84FB4B9E7BFFB0; PSTM=1544768079; BDUSS=3M2R3VvWkRpY0RVbTVMWVFqNWZBT3RYMktDdGk3YUFCV1laYzYzOWNFfmlYalJkRVFBQUFBJCQAAAAAAAAAAAEAAAAvfAkq0MK1xMbwteNiYWJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLRDF3i0Qxdb; BD_UPN=12314753; BD_HOME=1; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; delPer=0; BD_CK_SAM=1; PSINO=1; COOKIE_SESSION=475505_0_9_9_84_79_0_5_9_5_0_10_475521_0_14_0_1585355162_0_1585355148%7C9%23955168_11_1568635343%7C5; BDRCVFR[LqJxTNeWn7_]=mk3SLVN4HKm; H_PS_PSSID=; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; H_PS_645EC=bec2cY%2F%2BQ2LfQ0z4yrHe0ae37sRaat5g3h6T%2FNMIkkqobTzIWo5mG%2BwBv3509KR6J%2BjF47qU
2.2 POST请求
特点:
a.数据不会出现在地址栏中;
b.数据大小没有上限;
c.有请求体;
d.请求体重如果存在中文, 会使用URL编码;例如:username=%E5%BBC%A0%E4%88%89&password=456
请求体:
1. Referer:http://www.badiu.com; 意思就是你从百度的网址跳转过来的;可以用来防盗,统计等;
2. Content-type:application/x-www-form-urlencoded:表单的数据类型,使用url格式编码数据,是让服务器依照这个编码格式进行变吗的,数据以“%”为前缀,后面跟着两个十六进制数;
3. Content-Length:13, 请求体的长度13个字节;
4.keyword=damon: 请求体的内容, damon是表单中输入的数据,keyword是表单字段的名字;
三 响应协议
格式:
1. 响应首行;
2. 响应头信息;
3. 空行;
4. 响应体;
响应体内容是服务器发送给浏览器的内容,浏览器会根据内容进行渲染和显示。其中如果遇到<imp>标签,会再启动一个线程用来加载图片,所以经常会出现页面显示了但是图片还没有加载。
HTTP/1.1 200 OK 版本号:HTTP/1.1, 状态码:200 请求成功
Bdpagetype: 2
Bdqid: 0x96246a0f000f4322
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8 响应使用的编码UTF-8
Date: Sat, 28 Mar 2020 03:21:11 GMT 响应的时间
Expires: Sat, 28 Mar 2020 03:21:10 GMT
Server: BWS/1.1 服务器的版本信息
Set-Cookie: BDSVRTM=393; path=/ 响应客户端的Cookie
Set-Cookie: BD_HOME=1; path=/ 响应客户端的Cookie
Set-Cookie: H_PS_PSSID=1451_31120_21089_30825_30910_30824_31085; path=/; domain=.baidu.com 响应客户端的Cookie
Strict-Transport-Security: max-age=172800
Traceid: 1585365671275440513010818888817508827938
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
以上内容通过网页,点击F12->Network->点击Name是百度网址->点击Headers,查看到的请求协议和响应协议内容。
状态码:
1. 200: 请求成功;
2. 404: 请求的资源不存在;
3. 500: 请求的资源存在,但服务器出现错误;
4. 302: 服务器要求浏览器从新发个请求,服务器会发送一个location的响应头,用来指定新请求的URL地址;
5. 304: 用来缓存的时候使用;
HTML中指定响应头:
<meta http:equiv="" content="">用来指定响应头。