http协议理解4

1.状态码

1. 1XX 提示信息,意思是处理中 还有后续的操作;

1. 101 客户端使用upgrade字段,要求在http的基础上改为其他协议例如websocket来继续进行通信,服务器如果同意 就会发送101状态码

2. 2XX 成功,报文已经收到并被成功处理;

1. 200 一切正常。
2. 204 一切正常。没有返回body数据
3. 200 一切正常。分块下载和断点续传, 通常还伴随着字段content-range 表示传输整体body字节的范围 例如 100-200

3. 3XX 重定向,资源位置发生变化需要重新发送请求;

1. 301 永久重定向。资源地址永久改变了到了某个地址(如网站迁移),有服务器发起
2. 302 临时重定向。资源地址临时改变了到了某个地址(如服务器维护),有服务器发起,cdn不会做缓存优化
1. 304 重定向到了缓存的文件(例如cdn缓存的文件)。

4. 4XX 客户端错误 服务器无法处理;

1. 400 一个比较笼统的错误码,一般是参数错误。
2. 401 登录过期
3. 403 无权限访问
4. 404 没有找到资源,但是已经被用烂了
5. 405 请求方法错误
6. 406 资源不能满足客户端需求,例如 只有中文资源,请求的是英文
7. 408 请求超时了 服务器处理了太长时间
8. 409 多个请求并发应引起了竟态 冲突
9. 413 body传输的字节太多例如图片上传过大
10. 414 请求行的url 太大 超过了最大的长度
11. 429 客户端发送了太多的请求, 通常是服务器的限连策略。
12. 431 请求头head 某个字段过大或者整体过于大

5. 5XX 服务端错误 服务器内部发生了错误;

1. 500 一个比较笼统的错误码,服务端错误。 可以防止黑客分析
2. 501 功能尚未开发, 敬请期待
3. 502 网关错误 或者代理错误 例如nginx错误
4. 503 比较当前服务器很忙, 但是待会儿可能就可以正常访问了 通常还有一个retry-after字段,表示这个待会儿的具体时间

2.http特点

1. 灵活可扩展

head 可以扩展大量字段来支持各种定制 ;body也不限制txt,html,也可以传输图片 音频视频等数据;

2. 可靠传输

tcp/ip协议是一个可靠地传输协议,依赖它可以在下层使用多种手段保证数据保证能够完整的送达。

3. 应用层

http是一个应用层的协议, 但是基本上是一个“万能”的协议。

4. 请求-应答

请求-应答模式是http协议的根本的通信模型

请求方和应答方的角色也不是绝对的,例如1,服务器担任了代理服务器的角色,就可以扮演两个角色;2,服务器推送,也可以颠倒角色。

5. 无状态

没有记忆功能, 这次的请求和上次请求没有一点关系

只能借助于head中cookie等缓存手段来解决这个问题

3.http有哪些优点和缺点

优点 :

  • 1 . 简单灵活可扩展
  • 2 . 应用广泛,环境成熟
  • 3 . 无状态 服务器压力小

缺点 :

  • 1 . 无状态 导致没有上下文,无法记录用户的信息 解决方案:cookie session token
  • 2 . 不安全 明文传输没有加密,无法验证身份和完整性校验 解决方案:https
  • 3 . 性能 不算差 不够好 有队头阻塞问题 解决方案:http2 http3

4. http的实体数据

1-1. 数据类型和编码

1. 多用途互联网邮件扩展 MIME 是个很大的数据类型标准,http只顺手牵羊去了其中一部分,就是 MIME type; 列举几个:
  • 1 . text: text/plain text/css text/javascript
  • 2 . image: image/gif image/jpeg image/png
  • 3 . audio/video: audio/mpeg video/mp4
  • 4 . application: 数据格式不确定 必须有上层应用程序来决定 有,application/json application/javascript application/pdf

application/octet-stream 不知道是什么数据类型 即不透明的二进制数据

2.Encoding type 文本压缩的格式 需要用什么方式解码 常见的有三种:
  • 1 . gzip GUNzip 压缩格式 最常用
  • 2 . deflate 仅次于gzip
  • 3 . br 专门为http优化的新压缩算法

1-2.数据类型使用的头字段

http协议为了数据类型和编码 定义了两个Accept 请求头字段和两个Content响应实体头字段

1.客户端 Accept 请求头字段
  • 1 . Accept 客户端接收什么类型的编码
  • 2 . Accept-Encoding 客户端接收什么压缩格式
2.服务端 Content响应实体头字段
  • 1 . Content 服务端发送什么类型的编码
  • 2 . Content-Encoding 服务端发送什么压缩格式

2-1. 语言类型和编码

解决了国际化的问题 引入了两个概念 : 语言类型和字符集

1.语言类型 en en-US en-GB
2.字符集

早期世界各地的人们各自为政, 发明了很多的编码来处理文字,例如 英文:ASCll,汉语GBK,BIG5 日语 SHIFt_JIS

最后出现了统一世界的语言Unicode 和改进版本utf-8 ,utf-8已经统一世界了。

2-2. 语言类型使用的头字段

1. Accept-Language 用来表示客户端可以理解的自然语言
2. Content-language 表示服务端实体数据实际返回使用的自然语言
3. Accept-Charset 用来表示客户端可以理解的字符集
4. 用来表示服务端的返回内容使用的字符集 是Content-type的第二段说明 例如 Content-type:text/css; charset=utf-8

3-1,内容协商的质量值

使用q值来说明权重 优先级

例如 Accept: text/html, application/xml;q=0.9, /;q=0.8 分为了三段,1,html默认不写q为1;2,其次xml为0.9; 3,再其次*为0.8

3-2. 内容协商的结果

内容协商时不透明的,服务器会在响应头里多加一个vary字段来说明是依据哪几个字段来返回了报文,例如:
Vary: Accept-Encoding,User-Agent,Accept 服务端根据这三个字段返回了报文

5. http 传输大文件的方法

1. 数据压缩

Accept-Encoding和Content-Encoding决定了那种压缩格式

不过这个方法也有缺点 只能压缩文本,图片 音频 视频本身就是高度压缩的,如果使用gzip甚至还会增大一点。

2. 分块传输

使用chunked 来分成小块传输 浏览器收到在组装复原,状态码为206 ,报文字段为Transfer-Encoding: chunked;

无法使用Content-Length字段 ,和Transfer-Encoding是互斥的.

3. 范围请求

在视频技术里,可以根据时间点首先先请求一小节的视频观看,然后快播放完的时候在去发请求下一小节的内容, 这个时候就是范围请求应用的时候

请求字段: Range:bytes=0-31

响应字段 Content-Range: bytes 0-31/96 ;Content-Length:32 ;Accept-Range: bytes
成功状态码为206,范围不合法会返回416

断点续传也是基于此技术

4. 多段数据

范围请求一次只支持获取一个片段, 其实还可以在请求头里Range使用多个x-y,一次获取多个片段数据

这个时候需要一个特殊的MIME类型 multipart/byteranges 并且还要使用一个参数 boundary=xxx给出段分隔标记

请求字段: Range:bytes=0-31,100-131

响应字段 Content-type: multipart/byteranges boundary=00000001 ;Content-Length:64 ;Accept-Range: bytes; Connection:keep-alive

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值