HTTP协议

HTTP协议的介绍

  • HTTP协议就是超文本传输协议。
  • 超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片、音乐、视频、超链接等等,都属于超文本。
  • HTTP协议的制作者是蒂姆·伯纳斯-李,1991年设计出来的,HTTP协议设计之前目的是传输网页数据,现在允许传输任意类型的数据。
  • 传输HTTP协议格式的数据是基于TCP传输协议的,发送数据之前需要先建立连接。

HTTP协议的作用

规定了浏览器和Web服务器通信数据的格式,也就是说浏览器和Web服务器通信需要使用http协议。

浏览器访问web服务器的通信过程

URL

URL表达的意思是统一资源定位符,通俗理解就是网络资源地址,也就是我们常说的网址。

URL的组成

https://news.163.com/18/1122/10/E131233H.html

URL的组成部分:

  1. 协议部分:https://、http://、ftp://
  2. 域名部分:news.163.com
  3. 资源路径部分:/18/1122/10/E131233H.html

域名:

域名就是IP地址的别名,它是用点进行分割使用英文字母和数字组成的名字,使用域名目的就是方便的记住某台主机IP地址。

URL的扩展:

https://news.163.com/hello.html?page=1&count=10

  • 查询参数部分:?page=1&count=10

参数说明:

  • ?后面的page表示第一个参数,后面的参数都使用&进行连接


HTTP请求报文

HTTP最常见的请求报文有两种:

  • GET方式的请求报文
  • POST方式的请求报文

说明:

  • GET:获取web服务器数据
  • POST:向web服务器提交数据

HTTP GET 请求分析

---请求行---GET / HTTP/1.1 => 请求方式 请求的资源路径 http协议的版本---请求头---Host: www.baidu.com => 服务器的主机ip地址和端口号,如果看不到端口号,https默认是443Connection: keep-alive => 和服务端程序保持长连接,当客户端和服务端有一段时间没有通信,那么服务端程序会主动向客户端断开连接Accept: text/plain, */*; q=0.01 => 告诉服务端程序,可以接受的数据类型X-Requested-With: XMLHttpRequestUser-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=14Accept-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%7C9%235901_223_1601569591%7C9; H_PS_PSSID=32755_32617_1448_32735_7544_32706_32230_7517_7605 => Cookie客户端用户身份的标识---空行---\r

总结

  • 一个HTTP请求报文可以由请求行请求头空行请求体4个部分组成
  • 请求行是由三部分组成:请求方式、请求资源路径、HTTP协议版本
  • GET方式的请求报文没有请求体,只有请求行、请求头、空行组成
  • POST方式的请求报文可以有请求行、请求头、空行、请求体四部分组成,注意:POST方式可以允许没有请求体,但是这种格式很少见

HTTP响应报文

---响应行---HTTP/1.1 200 OK => http协议版本 状态码 状态描述Bdpagetype: 2Bdqid: 0x97a8872b0007466aCache-Control: privateConnection: keep-alive => 和客户端保持长连接Content-Encoding: gzipContent-Type: text/html;charset=utf-8 => 服务器发送给浏览器的内容类型及编码格式Date: Mon, 05 Oct 2020 05:20:48 GMT => 服务器的时间,格林威治时间Expires: Mon, 05 Oct 2020 05:20:47 GMTP3p: CP=" OTI DSP COR IVA OUR IND COM "Server: BWS/1.1 => 服务器的名称Set-Cookie: BDRCVFR[EaNsStaiD7m]=aeXf-1x8UdYcs; path=/; domain=.baidu.comSet-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.comStrict-Transport-Security: max-age=172800Traceid: 1601875248028832205810928133114568328810X-Ua-Compatible: IE=Edge,chrome=1Transfer-Encoding: chunked => 服务器发送给客户端程序(浏览器)的数据不确定数据长度,数据发送结束的接收标识:0\r
,Content-Length:200(字节),服务端发送给客户端的数据确定长度。内容长度这两个选项只能二选一

HTTP状态码介绍

HTTP状态码是用于表示web服务器响应状态的3位数字代码

状态码

说明

200

请求成功

307

重定向

400

错误的请求,请求地址或者参数有误

404

请求资源在服务器不存在

500

服务器内部源代码出错

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章