- HTTP协议就是超文本传输协议。
- 超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片、音乐、视频、超链接等等,都属于超文本。
- HTTP协议的制作者是蒂姆·伯纳斯-李,1991年设计出来的,HTTP协议设计之前目的是传输网页数据,现在允许传输任意类型的数据。
- 传输HTTP协议格式的数据是基于TCP传输协议的,发送数据之前需要先建立连接。
它规定了浏览器和Web服务器通信数据的格式,也就是说浏览器和Web服务器通信需要使用http协议。
浏览器访问web服务器的通信过程URL
URL表达的意思是统一资源定位符,通俗理解就是网络资源地址,也就是我们常说的网址。
URL的组成https://news.163.com/18/1122/10/E131233H.html
URL的组成部分:
- 协议部分:https://、http://、ftp://
- 域名部分:news.163.com
- 资源路径部分:/18/1122/10/E131233H.html
域名:
域名就是IP地址的别名,它是用点进行分割使用英文字母和数字组成的名字,使用域名目的就是方便的记住某台主机IP地址。
URL的扩展:
https://news.163.com/hello.html?page=1&count=10
- 查询参数部分:?page=1&count=10
参数说明:
- ?后面的page表示第一个参数,后面的参数都使用&进行连接
HTTP最常见的请求报文有两种:
- GET方式的请求报文
- POST方式的请求报文
说明:
- GET:获取web服务器数据
- POST:向web服务器提交数据
---请求行---
GET / HTTP/1.1 => 请求方式 请求的资源路径 http协议的版本
---请求头---
Host: www.baidu.com => 服务器的主机ip地址和端口号,如果看不到端口号,https默认是443
Connection: keep-alive => 和服务端程序保持长连接,当客户端和服务端有一段时间没有通信,那么服务端程序会主动向客户端断开连接
Accept: text/plain, */*; q=0.01 => 告诉服务端程序,可以接受的数据类型
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400 => 用户代理,客户端程序的名称,爬虫使用,可以根据是否有User-Agent进行反爬
Referer: https://www.baidu.com/?tn=98010089_dg&ch=14
Accept-Encoding: gzip, deflate, br => 告诉服务端程序支持的压缩算法
Accept-Language: zh-CN,zh;q=0.9 => 告诉服务端程序支持的语言
COOKIE: BIDUPSID=2AD97C5F09037008B8B7479292AF46DD; PSTM=1587562369; BD_UPN=1a314753; sug=3; sugstore=0; ORIGIN=0; bdime=0; BAIDUID=2AD97C5F09037008B8B7479292AF46DD:SL=0:NR=10:FG=1; BDUSS=HpCOFp1RWlobThxanZ3Ym0zNWtoUUhzUENxRHZUUTNOWktoR3A3QmFhMzdXdFplRVFBQUFBJCQAAAAAAAAAAAEAAACeAR82uqOyvMDvtcS2rLy-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvNrl77za5eR; BDUSS_BFESS=HpCOFp1RWlobThxanZ3Ym0zNWtoUUhzUENxRHZUUTNOWktoR3A3QmFhMzdXdFplRVFBQUFBJCQAAAAAAAAAAAEAAACeAR82uqOyvMDvtcS2rLy-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvNrl77za5eR; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BDRCVFR[S_ukKV6dOkf]=mk3SLVN4HKm; BD_HOME=1; delPer=0; BD_CK_SAM=1; PSINO=7; BDRCVFR[EaNsStaiD7m]=mk3SLVN4HKm; COOKIE_SESSION=515_6_9_9_11_17_0_0_9_7_0_4_86791_0_0_0_1601816163_1601569596_1601816640|9#5901_223_1601569591|9; H_PS_PSSID=32755_32617_1448_32735_7544_32706_32230_7517_7605 => Cookie客户端用户身份的标识
---空行---
\r\n
- 一个HTTP请求报文可以由请求行、请求头、空行和请求体4个部分组成
- 请求行是由三部分组成:请求方式、请求资源路径、HTTP协议版本
- GET方式的请求报文没有请求体,只有请求行、请求头、空行组成
- POST方式的请求报文可以有请求行、请求头、空行、请求体四部分组成,注意:POST方式可以允许没有请求体,但是这种格式很少见
---响应行---
HTTP/1.1 200 OK => http协议版本 状态码 状态描述
Bdpagetype: 2
Bdqid: 0x97a8872b0007466a
Cache-Control: private
Connection: keep-alive => 和客户端保持长连接
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8 => 服务器发送给浏览器的内容类型及编码格式
Date: Mon, 05 Oct 2020 05:20:48 GMT => 服务器的时间,格林威治时间
Expires: Mon, 05 Oct 2020 05:20:47 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1 => 服务器的名称
Set-Cookie: BDRCVFR[EaNsStaiD7m]=aeXf-1x8UdYcs; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=515; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=32755_32617_1448_32735_7544_32706_32230_7517_7605; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1601875248028832205810928133114568328810
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked => 服务器发送给客户端程序(浏览器)的数据不确定数据长度,数据发送结束的接收标识:0\r\n,Content-Length:200(字节),服务端发送给客户端的数据确定长度。内容长度这两个选项只能二选一
HTTP状态码是用于表示web服务器响应状态的3位数字代码
状态码 |
说明 |
200 |
请求成功 |
307 |
重定向 |
400 |
错误的请求,请求地址或者参数有误 |
404 |
请求资源在服务器不存在 |
500 |
服务器内部源代码出错 |