http的Content-Encoding和Content-Type及服务器和客户端处理流程
比如,A 给 B发送了一条信息:hello,首先,A要告诉B,我给你发的这条数据的类型,不同类型的数据,接收方的处理方式不一样,hello属于文本类型,所以Content-Type就要设置成
text-plain; 但是计算机只知道0和1,所以就按照一定的规则把 hello 变成0和1组成的代码,所使用的规则也要在Content-Type里设置,比如A将hello用iso-8859-1方式编码转为0和1的组合,为:
0110100001100101011011000110110001101111,
按照8位1字节来分,可以分成5个字节:
01101000 01100101 01101100 01101100 01101111
h e l l o
所以,完整的Content-Type应该为:
Content-Type:text/plain;charset=iso-8859-1
接着,假如A还需要对hello进行压缩呢?于是,A先用压缩算法对hello进行压缩,比如A用了gzip算法,完了之后,原先用iso-8859-1方式编码的hello二进制串已经发生了改变,A不能直接把压缩后的内容直接发给B,而是应该告诉B,我对传输的数据进行了压缩,
所以A还要设置Content-Encoding为 gzip,体现在A的报文里面为:Content-Encoding: gzip
设置完Content-Type和Content-Encoding,A就把hello发给了B。
当B接收到A发送的数据后,先看Content-Encoding有没有值,
这里由于A已经设置了Content-Encoding:gzip,所以B首先要对A发送的内容进行解压缩,解压缩的算法和A采取的压缩算法要对应,这里B就采取了gzip的解压算法,得到了压缩之前的一串0和1组成的代码(0110100001100101011011000110110001101111),然后B就能顺利地按照每8位一字节的方式来解析这串2进制代码,B先看Content-Type第一个分号前的内容是
text/plain,知道A这是发送了一段文本数据,接着看分号后面是
charset=iso-8859-1,知道了A是用iso-8859-1方式编码的,那么B就相应的用iso-8859-1的方式来解码,最后得到人类可识别的数据 ”hello”
————————————————
版权声明:本文为CSDN博主「偏执的执」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34967644/article/details/86680061
http的Content-Encoding和Content-Type及服务器和客户端处理流程的更多相关文章
- Content encoding error问题解决方法
A few people have been experiencing the following error. UPDATE: The reason for it happening is beca ...
- Jmeter学习——http请求Content encoding的重要性
今天在测试一个接口的时候,遇到的问题,困扰了我一天 下面是一个接口,使用的是post请求,Content-Type为application/json 返回参数如下: 瞬间懵逼了!!!为什么呢?渠道是存 ...
- Content Provider Basics ——Content Provider基础
A content provider manages access to a central repository of data. A provider is part of an Android ...
- Django 报错 Reverse for 'content' not found. 'content' is not a valid view function or pattern name.
Django 报错 Reverse for 'content' not found. 'content' is not a valid view function or pattern name. 我 ...
- 转:AutoLayout中的Content Hugging 和 Content Compression Resistance
OS6中引入了AutoLayout,极大的方便了UI元素的布局,现在已经过去一年了,并且大部分设备的系统也已经升级到了iOS6,是时候要使用此项技术了. 在AutoLayout的学习中有两个概念官方文 ...
- iOS开发 - Content hugging priority & Content compression resistance priority
1. 什么是Content hugging priority 你可以把它想象成一根放在视图上的橡皮筋. 这根橡皮筋会组织视图超过它本身的固有大小(intrinsic content size). 它存 ...
- Python爬虫连载8-JS加密(一)
一.JS加密 1.有的反爬虫策略采用js对需要传输的数据进行加密处理. 2.经过加密,传输的就是密文 3.加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者 4.通多阅读加 ...
- 使用chardet判断编码方式
1. chardet是什么 chardet是python中比较常用的一个编码方式检测库,需要注意的是它只检测并返回检测结果,并不负责对原数据做什么处理. 可以使用PIP命令安装: pip instal ...
- mui与springMVC前后端分离
这个小dome简单来说的前后端分离,通过跨域调用接口来显示数据. 前端用到mui框架,主要来显示数据. 后端用到Java的springMVC,restful服务来做增删改查管理, 这里主要实现动态显示 ...
- Serlect的笔记二(request 、 ersponse)
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. 下面这两个对象的基本理解: 一.HttpServletRequ ...
随机推荐
- 小程序-登录-token
1.前端调用wx.login()获取code值 2.前端通过调用wx.getUserInfo获取iv.rawData.signature.encryptedData等加密数据,传递给后端 3.服务器通 ...
- TweenMax的GSAP(GreenSock动画平台)GSAP,专业的Web动画库
很好奇红框框里面的内容是什么,于是点了进去,又百度了下这个英文缩写具体指的什么东西. GSAP的全名是GreenSock Animation Platform,是一个从flash时代一直发展到今天的专 ...
- iOS之UIDatePicker
这个还要取决于手机系统设置
- Linux内核设计与实现 总结笔记(第十二章)内存管理
内核里的内存分配不像其他地方分配内存那么容易,内核的内存分配不能简单便捷的使用,分配机制也不能太复杂. 一.页 内核把页作为内存管理的基本单位,尽管处理器最小寻址坑是是字或者字节.但是内存管理单元MM ...
- Python常用框架
序言 所谓专家,就是在一个很小的领域里把所有错误都犯过了的人--尼尔斯·玻尔 Django Flask Tornado 适合后端微服务 资料 flask
- idea 打包model 为jar包
1,在项目上鼠标右键 --> Open Module Settings 2, Artifacts --> + --> JAR --> From modules with dep ...
- 浙大PAT CCCC L3-015 球队“食物链” ( 搜索 && 剪枝 )
题目链接 题意 : 有 n 个球队,给出主客场胜负图,找出一个序列 1.2.3..... 使得 1 战胜过 2 .2 战胜过 3.3 战胜过 4..... n 战胜过 1 ( 这个序列是 1~n 的其 ...
- C中的system函数
windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *command); s ...
- 设计模式学习笔记——Adapter 适配器模式
适配器设计模式的适应场景: 一般情况是上端固定,下端固定,下端功能不满足或跟上端不协调,使用适配器重新包一层(继承适配器接口,以满足上端需求,继承下层类,以调用方法),使下端代码能满足上端需求(欺骗, ...
- 如何删除由Automater创建的服务
想要设置两个实用的快捷设置(如何设置): 1.复制当前文件或者文件夹路径 2.在终端打开文件夹 然后想到可以用mac自带的自动操作这款软件,英文叫Automater.接着发现,显示路径栏后,直接就提供 ...