【JavaWeb】应用层协议——HTTP协议
创始人
2024-06-02 04:18:01
0

目录

HTTP抓包工具

抓包工具下载

查看抓包内容

抓包原理

HTTP协议格式

发送方格式

方法

URL

URL encode

版本

请求报头

空行

接收方格式

状态码 + 状态码描述

响应报头

构造HTTP请求

form表单构造请求

发送GET请求

发送POST请求

ajax构造请求

发送GET请求

发送POST请求

使用Postman软件构造请求


HTTP抓包工具

学习HTTP协议前,需要先下载一个抓包工具,这样方便我们学习HTTP协议。

抓包工具下载

这个抓包工具可以完整的展示出HTTP报文,方便我们观察报文内容。

Download Fiddler Web Debugging Tool for Free by Telerik

① 通过这个网站下载Fiddler工具,下载过程一直next即可。

② 开启HTTPS功能,同意下载对应的证书

 在Tools下的Options选项

完成以上步骤后就可以开始抓包了。

查看抓包内容

访问一下bing搜索网站 

双击改内容。

此时就用记事本打开了抓包内容

抓包原理

正向代理:帮客户端代理

反向代理:帮服务器代理 


HTTP协议格式

学习协议,就是学习它的协议格式。接下来将通过发送发的HTTP请求协议格式和接收方HTTP响应协议格式来认识HTTP协议。

发送方格式

发送方格式如下:


方法

方法说明支持的HTTP协议版本
GET获取资源1.0   1.1
POST传输实体主体1.0   1.1
PUT传输文件1.0   1.1
HEAD获得报文首部1.0   1.1
DELETE删除文件1.0   1.1
OPTIONS询问支持的方法1.1
TRACE追踪路径1.1
CONNECTION要求用隧道协议连接代理1.1
LINK建立和资源之间的联系1.0
UNLINE断开连接关系

1.0

上面的这些方法中,GET的使用次数占绝大多数,POST占一小部分,其余方法共占用一小部分。

GET方法

什么行为会触发GET方法

在网站上输入一个URL就会发送一个GET请求;

HTML中的link、img、script等标签也会发送GET请求;

JavaScript中的ajax也能构造GET请求。

POST方法

什么行为会触发POST方法

用户提交数据给服务器(比如登录页面);

HTML中的from标签也可以构造POST请求;

JavaScript中的ajax也能构造构造POST请求。

GET方法和POST方法的区别

①GET一般是从服务器获取数据

    POST一般是给服务器提交数据

②GET的信息一般放在URL中的query string中的

    POST信息一般放在请求正文中

③GET通常被设计成幂等

    POST不要求幂等

              幂等:每次输入的内容一样,得到的结果也一样

④GET可以缓存

    POST一般不能缓存

              缓存:请求的结果保存下来,下次直接取结果,不用发送请求

这只是这两个方法通常是这样使用的,本质上没有任何区别,上面的情况完全可以互换。

URL

URL (Uniform Resource Locator 统一资源定位符) 互联网上的每个文件都有唯一的URL 另外URL不是HTTP协议专属的,很多协议都可以使用

URL encode

上面出现的 / : ? 等在URL中都是有特殊意义了,不能随意出现。如果想要使用,就先要进行转义。

转移规则:先把字符转成十六进制,从右往左取四位,把两位当成一位,在前面加上% 变成 %XX的形式。通过这个网站UrlEncode编码/UrlDecode解码 - 站长工具 (chinaz.com)可以转回来。

版本

HTTP的版本:0.9 -> 1.0 -> 1.1 -> 2.0 -> 3.0

1.0 1.1 2.0这三个版本都是基于传输层的TCP协议实现的,而3.0是基于UDP实现的。

最主要使用的版本还是1.1和2.0


请求报头

请求报头是很多个键值对组成的,每个键值对占一行,键和值之间使用 : 分割

报头的内容种类非常多,下面介绍几个比较常见的。

Host:表示服务器主机的地址和端口

Content-Length:表示正文中的数据长度

Content-Type:表示正文中的数据格式

User-Agent:早期的浏览器版本升级迭代,导致浏览器不同版本之间差异很大。旧版只支持文本,而新版还支持图片... ...开发网页的时候,为了支持不同版本的浏览器,就做了很多版本的网页。User-Agent的内容就是浏览器的版本。

现在User-Agent主要用来区分PC端和移动端

Refer:表示这个当前页面是从哪个页面跳转过来的。

Cookie:本质上是浏览器给网页提供的 存储本地数据 的机制。

存储方式是键值对,存储内容是程序员自己定义的。

Cookie来自服务器中的数据。服务器通过报头的Set-Cookie设置Cookie,并且决定存储什么内容。

Cookie存储在浏览器,也就是存在硬盘当中。存储划分:  浏览器 + 域名。不止存储了键值对,还存储了过期时间。

Cookie数据会和请求一起返回到服务器中。这样服务器就知道浏览器的一些状态。


空行

由于HTTP报文中没有规定报头中的键值对可以存在多少个,也没有记录报头中有多少个键值对,通过这个空行就可以很好的把报头和正文部分分隔开来,从而有效的解决粘包问题。


接收方格式

下面是接收方返回的报文格式。


状态码 + 状态码描述

状态码表示访问界面的结果。通过这个网站HTTP 响应状态码 - HTTP | MDN (mozilla.org)可以仔细查询状态码所代表的含义。

常见的状态码 + 状态码描述:

200 OK :表示访问成功。

403 Forbidden :表示访问被拒绝。需要一定的权限才可以访问。

404 Not Found :表示没有从服务器找到目标资源。

405 Method Not Allowed :表示方法不支持,或者不允许用户使用这个方法。

500 Internal Server Error :表示服务器内部出现问题。服务器内部的代码执行出现问题,导致服务器崩溃。

504 Gateway Timeout :表示处理请求超时。出现在服务器负载较大的时候。

302 Move Temporarily :临时重定向。

301 Moved Permanently :永久重定向。
临时重定向:每次当浏览器向服务器请求访问某个网站,但是该网站的IP暂时转移了,所以服务器就返回新网站的IP,浏览器拿到新的IP后再访问新的。 永久重定向:第一次重定向后,当再次访问旧网站时直接访问新IP。 请求转发:当浏览器访问旧IP的时候,服务器直接自动找到新的IP,并且返回请求。
状态码总结
类别原因短语
1XXInformational(信息性状态码)接受的请求正在处理
2XXSuccess(成功状态码)请求状态正常处理完毕
3XXRedirection(重定向状态)需要进行附加操作完成请求
4XXClient Error(客户端错误状态码)客户端无法处理请求
5XXServer Error(服务器状态错误码)服务器无法处理请求

响应报头

于请求报头基本一致。常见的报头内容:

text/html : body 数据格式是 HTML text/css : body 数据格式是 CSS application/javascript : body 数据格式是 JavaScript application/json : body 数据格式是 JSON

构造HTTP请求

form表单构造请求

form这个HTML标签通常用于给服务器发送GET请求和POST请求。

form重要参数:

action:构造HTTP请求的URL

method:构造HTTP请求的方法是什么,只能是GET和POST

input重要参数:

type:表示输入类型  text表示文本  password表示密码  submit表示提交按钮

name:表示构造出的HTTP请求的query string的key  query string的 value 是输入框用户输入的内容

value:input 

发送GET请求



form表单构造请求

  

发送POST请求



form表单构造请求

 

 


ajax构造请求

Asynchronous JavaScript + XML(异步 JavaScript 和 XML)

异步:通过ajax发送请求之后,不需要等服务器返回结果,可以继续往下执行后续代码。当服务器返回之后,通知浏览器后再继续处理结果。

同步:发送请求后,需要等浏览器返回结果后才可以执行后续代码。

JavaScript 原生提供的ajax的API使用较为麻烦

jquery 提供的ajax 把原生的API进行了封装,使用更为简单

发送GET请求



使用jquery中的ajax



发送POST请求



使用jquery中的ajax




使用Postman软件构造请求

Download Postman | Get Started for Free

通过上面网站下载安装注册Postman软件。

完成后

①创建Workspaces 

 

②构造请求

③发送请求

 ④得到响应

 

另外,该软件还可以把请求写成各种编程语言代码。

 

 


有什么错误评论区指出。希望可以帮到你。 

相关内容

热门资讯

考勤管理系统v2024-考勤管... 哎呀,说起这个考勤管理系统v2024,真是让人又爱又恨啊!你知道的,以前那些老掉牙的考勤机,每次打卡...
nuke图章工具-Nuke 图... 哎呀,说到这个Nuke图章工具,我的心就像被猫抓了一样,既痒又疼!你知道吗,这玩意儿有时候简直就是我...
安卓 电池 检测-安卓手机电池... 哎呀,说到安卓手机的电池,真是让人又爱又恨!每天出门前,总是要检查一下那小图标,看看电量还剩下多少。...
中国图书管理分类法:复杂如迷宫... 哎呀,说到这个中国图书管理分类法,我就忍不住要吐槽两句了!这玩意儿,简直就像是图书馆里的迷宫,让人找...
在mapinfo地图只显示簇2... 哎呀,说到这个mapinfo地图啊,真是让人又爱又恨!特别是那个簇2的地图,每次打开都让我眼花缭乱。...
迅龙数据恢复 注册码-迅龙数据... 亲们,今天我要跟大家聊聊一个超级重要的话题——迅龙数据恢复!哎呀,说起这个,我的心还扑通扑通跳呢!你...
走进广州北斗导航技术有限公司,... 嘿,亲爱的朋友们,今天我要带你们走进一个充满激情和梦想的地方——广州北斗导航技术有限公司。这里,不仅...
格式化的硬盘能恢复吗-格式化硬... 哎哟喂,说起这格式化的硬盘啊,我的心就揪成一团儿!你知道吗,那些珍贵的照片、那些日夜辛辛苦苦敲出来的...
索尼u盘重装系统教程-索尼 U... 哎呀,天哪!电脑又卡又慢,是不是让你抓狂到不行?别急,我来帮你!今天咱们就聊聊怎么用索尼U盘重装系统...
tourstart.exe-探... 嘿,大家好!今天咱们聊聊那个神秘的小东西——Tourstart.exe。不知道你们有没有过那种感觉,...
physdiskwrite下载... 哎呀,我的天!说到这个Physdiskwrite下载,我这心里头就五味杂陈的。你知道吗,这玩意儿简直...
everybody s tal... 在这个喧嚣的世界里,Everybody'sTalkin',每个人都在说着些什么,但真正被听见的又有多...
a10 9600p 核显-A1... 嘿嘿,今天咱们来聊聊那个小巧玲珑的A109600P核显,这小家伙虽然个头不大,但在我的电脑里可是个活...
win7 activation... 哎呀,说到这个Win7激活,我真是有一肚子苦水要倒!每次看到那个讨厌的“非正版”提示,我的心就像被一...
党务系统2024安装说明-20... 哎呀,说到这个党务系统2024的安装,我的心都快跳出胸膛了!这可不是闹着玩的,每一步都得小心翼翼,生...
山东智汇云:数字世界的魔法师,... 哎呀,说起这个山东智汇云啊,真是让人激动得不行!这不仅仅是一个公司,简直就像是我们这个数字世界的魔法...
身份证号对应城市-身份证号码背... 你知道吗?每次看到那一串长长的身份证号码,我总忍不住想去探寻它背后的故事。那不仅仅是一串数字,它是通...
麦多商城系统:购物天堂,惊喜不... 嘿,大家好!今天我要聊聊我最爱的麦多商城系统,这可不仅仅是一个购物网站那么简单,对我来说,它简直就是...
小程序tabbar-小程序 T... 嘿,你有没有试过那种感觉,就像是你每次打开手机,就像是在和一个小小的世界打招呼?对,我就是说那个小程...
手机视频如何恢复-手机珍贵视频... 哎呀,天哪!我的手机里那些珍贵的视频,怎么就突然不见了呢?那些搞笑的瞬间,那些难忘的旅行记忆,还有那...