一、http协议概念定义
HTTP(HyperText Transfer Protocol):即超文本传输协议,于1991年由蒂姆·伯纳斯-李设计制作
超文本:是超级文本的缩写,指超越文本限制或超链接,如音乐、图片、视频、超链接等
目的:是用来传输网页数据,现在运行传输任意类型的数据,传输http协议格式的数据是基于TCP传输协议,发送数据前需先建立连接
作用:规定了浏览器和web服务器通信数据的格式,浏览器和web服务器通信需使用http协议
二、浏览器与服务器通信过程
通过DNS(域名解析服务器)将域名解析为IP地址,浏览器获取到IP地址浏览器与web服务器程序建立连接浏览器根据IP地址及web服务器程序默认80端口号发送http请求数据至web服务器程序web服务器程序根据请求向服务器主机获取图片、网页、js数据资源服务器主机将资源返回给web服务器程序web服务器程序返回http响应数据至浏览器三、URL网址概念定义
URL(Uniform Resoure Locator):统一资源定位符,通俗理解就是网络资源的地址,简称网址,通过URL能够找到网络中对应的资源数据
域名:是IP地址的别名,是用点进行分割使用英文字母和数字组成的名字,使用域名目的是为了方便记住主机IP地址
URL举例:http://xqnav.top/nav/index.html?page=1&count=5URL组成协议部分:http://、https://、ftp://域名部分:xqnav.top资源路径部分:/nav/index.html参数部分:?后面的page和count为参数,参数间用&连接
四、查看HTTP协议的通信过程
开发者工具使用:以Google Chrome浏览器为例,Windows和Linux平台按F12,macOS选择 视图 ->开发者 ->开发者工具或直接使用alt+command+i快捷键,另一通用操作是在网页右击选择检查
常用标签选项说明Elements:元素,用于查看或修改HTML标签Console:控制台,执行js代码,显示脚本输出的调试信息Sources:源代码,查看静态资源文件,断点调试js代码Network:网络,查看http协议的通信过程,http请求的详细信息,如请求头、响应头等Headers:http的头信息Response:http的响应体信息General:主要信息Response Headers:http响应头信息Request Headers:http请求头信息
五、http请求报文方式
http请求报文组成:请求行、请求头、空行、和请求体请求行组成:请求方式、请求资源路径、http协议版本常见方式GET方式:获取web服务器数据,无请求体POST方式:向web服务器提交数据,请求体可有可无,一般均有六、GET请求头报文解释说明
-------------------请求行---------------------GET / HTTP/1.1 # GET请求方式 请求资源路径 HTTP协议版本-------------------请求头---------------------Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9# 可接受的数据内容类型Accept-Encoding: gzip, deflate, br# 可接受的压缩格式Accept-Language: zh-CN,zh;q=0.9#可接受的语言Connection: keep-alive # 和服务端保持长连接Cookie: ISSW=1; ISSW=1;…… # 登录用户的身份标识,用来保存用户身份信息Host:# 服务器的主机地址和端口号,默认是80Referer: /s?ie=utf-…… # 当前访问用户来源,服务器用来判断统计用户来源Sec-Fetch-Dest: document # 表示请求的目的地,即如何使用获取的数据,指明客户端请求的目的,期望需要的资源类型Sec-Fetch-Mode: navigate # 请求的模式,表示这是一个浏览器的页面切换请求Sec-Fetch-Site: same-origin # 请求发起者的来源与目标资源来源之间的关系,此处表示发起和目标站点源完全一致Upgrade-Insecure-Requests: 1 # 让浏览器升级不安全请求,使用https请求User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36# 用户代理,也就是客户端的名称;用户浏览器信息sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105" # 用来替代user-agent,可以防止泄露浏览器详细信息sec-ch-ua-mobile: ?0 # 是否是移动端用户sec-ch-ua-platform: "Windows" # 表示操作系统名称--------------------空行---------------------
七、POST请求头报文解释说明
------------------请求行--------------------POST /v2/api/?login HTTP/1.1 # POST请求方式 请求资源路径 HTTP协议版本------------------请求头--------------------Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9Cache-Control: max-age=0 # 缓存控制,多长时间不访问服务器,该响应包含对象的过期时间Connection: keep-alive # 和服务端保持长连接Content-Length: 4737 # 消息实体的传输长度,报头以外的内容长度Content-Type: application/x-www-form-urlencoded# 告诉服务端请求的数据类型Cookie: BIDUPSID=3A354E1289486ED85E4D2B9B42743E6E; ……Host: # 服务器的主机地址和端口号,默认是80Origin: # 当前请求来源于哪个站点Referer: /s?ie=utf-Sec-Fetch-Dest: iframeSec-Fetch-Mode: navigateSec-Fetch-Site: same-siteSec-Fetch-User: ?1 # 导航请求是否由用户激活触发(鼠标点击/键盘),1为是,0为不是Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 # 客户端的名称sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"-------------------空行----------------------------------------请求体-------------------username=admin&password=admin # 请求参数
八、响应报文解释说明
http响应报文组成:响应行、响应头、空行、响应体响应行组成:http协议版本、状态码、状态描述状态码200:请求成功307:重定向400:错误请求,请求地址或参数有误404:请求资源在服务器不存在500:服务器内部源代码出现错误-------------------响应行/状态行------------------HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述----------------------响应头----------------------Bdpagetype: 3Bdqid: 0xd604643700000bccCache-Control: privateCkpacknum: 2Ckrndstr: 700000bccConnection: keep-alive # 和客户端保持长连接Content-Encoding: brContent-Type: text/html;charset=utf-8# 内容类型Date: Tue, 18 Oct 02:55:01 GMT # 服务端的响应时间Server: BWS/1.1# 服务器名称及其版本号Set-Cookie: delPer=0; path=/; domain=.Set-Cookie: BD_CK_SAM=1;path=/Set-Cookie: PSINO=7; domain=.; path=/Set-Cookie: BDSVRTM=28; path=/Set-Cookie: H_PS_PSSID=36561_37559_37520_36921_36884_36786_37538_37498_37581_26350_37364_37464; path=/; domain=.; Secure; SameSite=NoneStrict-Transport-Security: max-age=172800 #要求客户端禁用HTTP协议,尝试后续都通过HTTPS协议进行通信,常见于HTTPS协议的网站Traceid: 1666061701046251853815421561211409402828Vary: Accept-EncodingX-Frame-Options: sameoriginX-Ua-Compatible: IE=Edge,chrome=1Transfer-Encoding: chunked # 发送给客户端内容不确定内容长度,发送结束的标记是0\r\n, Content-Length表示服务端确定发送给客户端的内容大小,但是二者只能用其一----------------------空行----------------------------------------------响应体----------------------<!DOCTYPE html><html lang=“en”> …</html> # 响应给客户端的数据
学习导航:http://xqnav.top/