【JavaWeb】知识总结Ⅷ(HTTP协议, GET请求包, POST请求包, 响应包的分析)

简介: 1. http 是 TCP/IP 协议的一个应用层协议,http 也是我们 web 开发的基础.http协议特点:2.基于请求响应模型的:一次请求对应一次响应3.http协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的· 缺点:多次请求之间不能共享数据 (java中使用会话技术解决session、cookie)· 优点:速度快

目录


🌒一. HTTP 协议介绍


🌒二. HTTP协议的特点


🌕三. GET请求包分析


🌕四. POST请求包分析


🌕五. 使用GET 请求,  POST 请求的场景有哪些


🌔六. HTTP 响应包分析


🌓七. 状态码


🌒八. MIME类型


一. HTTP 协议介绍


几种常见的请求 :




超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用广泛的一种网络协议。

是工作在 tcp/ip 协议基础上的,所有的 WWW 文件都遵守这个标准。

二. HTTP协议的特点

1. http 是 TCP/IP 协议的一个应用层协议,http 也是我们 web 开发的基础.

http协议特点:


2.基于请求响应模型的:一次请求对应一次响应


3.http协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的


· 缺点:多次请求之间不能共享数据    (java中使用会话技术解决session、cookie)


· 优点:速度快



4.Http是以明文方式发送数据

(数据不是加密的,很不安全--发展了现在安全的https协议)


5.用于从www服务器传输超文本到本地浏览器的传输协议


6. Http 协议是以TCP/IP为基础的应用层协议,用于定义浏览器与Web服务器之间交换数据的过程,大家平常通过浏览器访问Internate上的某一个网页的过程就是借助HTTP协议完成的


7.现在广泛使用的版本HTTP1.1

(1)跟Http1.0最大的区别是支持持久连接,在一个TCP/IP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。在1.0中如果要访问某个包含很多图片的网页时,每张图片都会建立一个连接,当图片下载完毕后,就会关闭连接(当某个网站图片很多时,这样就会造成下载速度非常慢),而在 Http1.1支持可持续性连接;

(2) Http1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的相应内容,这样也明显地减少了整个下载过程所需要的时间

8.状态码:


200 - 请求成功


301 - 资源(网页等)被永久转移到其它URL


404 - 请求的资源(网页等)不存在


500 - 内部服务器错误


.....



9.HTTP协议是一个无状态协议,也就是说客户端的一次请求接收结束后就会断开与服务器的连接,当发出第二次请求后重新建立访问连接,所以对于用户的多次请求我们就需要一种机制进行跟踪;

①Cookie跟踪

服务器端向客户端保存一些信息(只能是文本文件,长度也是有限制的最长为4K,客户端也可以阻止服务器的写入),因此 Cookie跟踪不太稳定,基于Cookie的开发一般是做些锦上添花的东西可有可无,对于核心的业务逻辑我们不能用Cookie进行开发;



②服务器在向客户端写数据的时候会将客户端标识一起写入,便于下次该客户访问是从客户端获取重要信息;



③服务器只能取出它自己在客户端写入的信息;


④Cookie分类

无生命周期的Cookie,它存活去E浏览器的缓存中;


有生命周期的Cookie,它具有有效时间,它存在于客户端磁盘中,有效期后自动消失。


如果一个请求包里含有服务器的其他资源, 那么就继续发送请求, 直到所需资源都请求到了为止


三. GET请求包分析

🌸请求行

🌸请求头

举例解释 :


✨✨更详细的解释 :



四. POST请求包分析

🌈🌈举例说明 :





五. 使用GET 请求,  POST 请求的场景有哪些

💡💡


● GET 请求有哪些

1. form 标签 method=get [ 指定,由程序员指定的 ]

2. a 标签[ 以 get 方式来获取资源 ]

3. link 标签引入 css [ 以 get 方式来获取资源 ]

4. Script 标签引入 js 文件 [ 以 get 方式来获取资源 ]

5. img 标签引入图片 [ 以 get 请求来获取图片 ]

6. iframe 引入 html 页面 [ 不演示 ]

7. 在浏览器地址栏中输入地址后敲回车 [ 用的比较多 ]

💡💡


● POST 请求有哪些

 form 标签 method=post

🌈🌈HTTP 请求中怎样选择 Get 和 Post 方式🌈🌈


在大部分情况下,我们不需要考虑这个问题,因为业务本身就会自动区别, 比如你要显示图片,引入 css/js 这个天然的就是 get 请求,比如你登录,发帖,上传文 件, 你就会使用 post  (用心体会)

传输的数据大小区别

1) get 传送的数据量较小。不能大于 2KB( 不同浏览器不一样 ) 。

2) post 传送的数据量较大。一般默认不受限制。

🌸🌸🌸什么情况下使用 post 请求


1) post 请求是会在浏览器上隐藏參数部分的,在安全要求的部分都会使用到 POST 请求。 如用户登录。数据增上改等等。都会把參数隐藏起来,这样就不会通过你的请求暴露你的參数格式。

       比方:del?id=1 ,别人就能够用 del?id=3 来删除你其它数据。

2) 在向 server 传递数据较大的时候。使用 POST , get 是有限制的 , 比如发帖 , 上传文件

🌸🌸🌸什么情况下使用 get 方式呢


1) 在前台页面展示,比如分页内容等,可以保留传递参数 , 可用来非常好的分享和传播 ,POST 中链接地址是不变化的, 不利于分享和传播

       例如 :



建议:

1) get 方式的安全性较 Post 方式要差些。包括机密信息的话。建议用 Post 数据提交方式;


2) 在做数据查询时。建议用 Get 方式;而在做数据加入、改动或删除时,建议用 Post 方式

六. HTTP 响应包分析

● HTTP 响应包括 3 个部分

       1. 响应行

       2. 响应头

       3. 响应体

● HTTP 响应包分析图



七. 状态码

状态行

格式: HTTP版本号 状态码 原因叙述<CRLF>

举例:HTTP/1.1 200 OK

状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:



🌸✨⭐ 演示 302 状态码使用 :



状态码大全:状态 | Status - HTTP 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云


八. MIME类型

MIME 介绍

1.MIME 是 HTTP 协议中数据类型。 MIME 的英文全称是 "Multipurpose Internet Mail Extensions" 多功能 Internet 邮件扩充服务。 MIME 类型的格式是 " 大类型 / 小类型 " , 并与某一种文件的扩展名相对应

2. 在响应包的 Content-Type 就有指定 , 如图


常见的 MIME 类型




相关文章
|
17天前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
67 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
2天前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
33 15
|
16天前
|
Web App开发 大数据 应用服务中间件
什么是 HTTP Range请求(范围请求)
HTTP Range 请求是一种非常有用的 HTTP 功能,允许客户端请求资源的特定部分,从而提高传输效率和用户体验。通过合理使用 Range 请求,可以实现断点续传、视频流播放和按需加载等功能。了解并掌握 HTTP Range 请求的工作原理和应用场景,对开发高效的网络应用至关重要。
55 15
|
26天前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
19天前
|
数据采集 JSON 测试技术
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
29 3
|
24天前
|
前端开发 UED 开发者
CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度
本文探讨了CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度;图标字体则以字体形式呈现图标,便于调整样式。文章分析了两者的优缺点及应用场景,并提供了应用技巧和注意事项,旨在帮助开发者提升页面性能,改善用户体验。
23 5
|
16天前
|
Web App开发 网络安全 数据安全/隐私保护
Lua中实现HTTP请求的User-Agent自定义
Lua中实现HTTP请求的User-Agent自定义
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead 当执行new Thread(Runnabler)后,新创建出来的线程处于new状态,这种线程不可能执行 当执行thread.start()后,线程处于runnable状态,这种情况下只要得到CPU,就可以开始执行了。
738 0
|
Java Apache
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
hbase从集群中有8台regionserver服务器,已稳定运行了5个多月,8月15号,发现集群中4个datanode进程死了,经查原因是内存 outofMemory了(因为这几台机器上部署了spark,给spark开的...
814 0
|
Web App开发 前端开发

热门文章

最新文章