深入解析HTTP(web开发详细理解原理)【JavaWeb】
2023-02-25 18:21:43 时间
一.HTTP基本知识
超文本传输协议HTTP:是一种简单的请求-响应协议,通常在TCP上运行。它指定客户端可以向服务器发送哪些消息以及将得到什么响应。
HTTP:
- 文本:html,字符串...Request URL: https://www.bilibili.com/ Request Method: GET Status Code: 200 Remote Address: 120.192.82.75:443 Referrer Policy: strict-origin-when-cross-origin上述常规标头解释: Request URL:请求 URL。 b站的域名 Request Method: 请求方式。 get方法 Status Code:状态码。 200 Remote Address:远程地址。 对应b站的远程地址。 Referrer Policy: 引用站点策略。 引用的协议。
- 超文本:音乐,图片,视频等等。
- 端口号80。
Https:比http安全,端口:443。二.http1.0和http2.0对比http1.0:规定浏览器和服务器仅保持短期连接。
浏览器的每个请求都需要与服务器建立TCP连接。服务器完成请求处理后,会立即断开TCP连接。服务器不会跟踪每个客户,也不会记录过去的请求。
HTTP 1.1:支持持久连接,默认情况下使用持久连接。
可以在同一TCP连接中传输多个HTTP请求和响应。多个请求和响应可以重叠,并且可以同时执行多个请求与响应。更多的请求头和响应头(例如,HTTP 1.0没有主机字段)。三.HTTP请求以B站为例:
打开F12,找到bilibili,查看Headers:详细解析如下:
规标头如下:
在这里插入图片描述
3.2 响应头
b站的响应头如下:
cache-control: no-cache
content-encoding: gzip
content-type: text/html; charset=utf-8
set-cookie: innersign=0; path=/; domain=.bilibili.com
上述响应头解释:
cache-control:缓存控制。 no-cache禁止使用缓存
content-encoding:编码格式。 gzip格式
content-type: 链接方式。 text/html; charset=utf-8
3.3请求标头
请求标头如下:
:authority: www.bilibili.com
:method: GET
:path: /
:scheme: https
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
cache-control: max-age=0
和响应头对应,基本参数作用相同,差别不大。
3.4请求行
请求行中的请求方法:get
请求方法:get、post、head、delete、put、trace......
Get:请求可以在有限的大小下携带更少的参数。数据内容将显示在浏览器的URL地址栏中,这是不安全但高效的
Post:请求可以携带的参数是无限的,并且大小是无限的。数据内容不会显示在浏览器的URL地址栏中,这是安全的,但效率低下。
3.5 消息头
主要的参数:
Accept
Accept-Encoding
Accept-Language
Cache-Control
Connection
上述消息头主要的参数解释如下:
Accept:支持的数据类型。
Accept-Encoding:支持的编码格式。
Accept-Language:语言环境。
Cache-Control:缓存控制,和上面一样。
Connection:保活状态
四.HTTP 响应
响应是存在于服务器和客服端之间的。
4.1 响应体
Accept:支持的数据类型。
Accept-Encoding:支持的编码格式。
Accept-Language:语言环境。
Cache-Control:缓存控制,和上面一样。
Connection:保活状态。
HOST:主机。
Refresh:刷新。
Location:重定位。
4.2 响应状态码(重点)
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
3**:3开头的是重定向。
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
502 - 网关错误
五. 思考题
留下一个经典的思考题题目:
在浏览器的地址栏中输入地址并按enter键时,页面会显示出来。怎么搞的?
相关文章
- Github下载release附件变相提速方法
- 流程图软件 drawio 免费 github开源
- Git多人协作
- 一文教会你mock(Mockito和PowerMock双剑合璧)
- Go语言性能剖析利器--pprof实战
- Linux内存泄露案例分析和内存管理分享
- 通过linux-PAM实现禁止root用户登陆的方法
- Linux策略路由详解
- 理解virt、res、shr之间的关系(linux系统篇)
- oracle学习笔记(十六) PL/SQL 异常和goto语句
- Linux云主机安全入侵排查步骤
- PHP官方框架 Zend Framework 2.1 发布
- PHP 5.4 内置Web服务器使用说明
- 一个小巧的PHP防注入类
- PHPCMS后台入口地址隐藏方法
- 在Linux中将目录压缩打包为zip文件 并通过ftp上传的Shell脚本
- 用PHP解析XML为数组的方法
- 一段经典的抽奖算法 for PHP版
- 在Linux中用Shell脚本完成SVN版本库的建立
- PHPCMS V9无法正常通过QQ登录的解决方案