【JavaWeb】应用层协议——HTTP协议
创始人
2024-06-02 04:59:36
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 

 

②构造请求

③发送请求

 ④得到响应

 

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

 

 


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

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...