关于ios11 https 请求头 Accept-Encoding设置为Brotli相关问题

场景:前天项目出现了个bug,ios10及以下系统正常,但ios11在使用https请求文件流和数据流,返回的数据出现乱码,但是设置为http时则是正常。

决解过程:

1、通过抓包发现ios11 的https的请求头Accept-Encoding为 br,gzip, deflate

http 的请求头Accept-Encoding为gzip, deflate

2、br是什么东东?

什么是Brotli

Brotli最初发布于2015年,用于网络字体的离线压缩。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。

关于ios11 https 请求头 Accept-Encoding设置为Brotli相关问题

与常见的通用压缩算法不同,Brotli使用一个预定义的120千字节字典。该字典包含超过13000个常用单词、短语和其他子字符串,这些来自一个文本和HTML文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。

使用brotli取代deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。

3、为啥http是正常的??

需要注意的是,只有在HTTPS的情况下,浏览器才会发送br这个Accept-Encoding。

4、为啥只有ios11才有啊??

看来是ios11才支持

关于ios11 https 请求头 Accept-Encoding设置为Brotli相关问题

5、最后怎么解决??

第一种方案、app端强制修改Accept-Encoding请求头哦,坑爹,又是我背锅!!

第二种,后台修改支持brotli压缩算法,正确选择!

猜你喜欢

转载自blog.csdn.net/kfq0071/article/details/79101676
今日推荐