首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换Base64 -- http/https通信8位干净吗?

替换Base64 -- http/https通信8位干净吗?
EN

Stack Overflow用户
提问于 2013-09-16 14:08:08
回答 4查看 1.3K关注 0票数 1

这里概述了8位清洁的含义。

在web应用程序的上下文中,为什么要将图像保存为Base64?与保持8位清洁相关的开销为33%。

如果传输方法是安全的,则不需要这样做。

但是基本上,我的图像保存在服务器上的Base64中,并传输到客户端,众所周知,客户端可以读取Base64。

以下是SO中Base64的客户端版本。

如何在Base64中将字符串编码为JavaScript?

http/https 8位干净吗?

参考文献

clean.html

打扫

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-18 01:24:31

在web应用程序的上下文中,为什么要将图像保存为Base64?与保持8位清洁相关的开销为33%。

Base64用于允许在ASCII定义中以可打印文本的形式表示8位二进制数据。这只是7位,而不是8位,因为最后128个字符将取决于集合编码(Latin1、UTF8等)。这意味着,如果在客户端/接收端设置了与源不同的编码类型,则编码数据可能会被破坏。

由于ASCII中没有足够的可打印字符来表示所有8位值(该值具有绝对值,并且不依赖于编码本身),因此您需要“将比特水化”,而基-64保持足够高的数字,以便将字节表示为可打印的字符。

这是33%的开销,因为表示可打印范围之外的字符的字节值必须移到ASCII表中可打印的值;Base-64允许这样做(您还可以使用过去常见的引文可打印,即。使用Usenet、电子邮件等)。

我正在考虑编写另一种编码类型,以消除开销。

祝你好运:-)

票数 2
EN

Stack Overflow用户

发布于 2013-09-16 15:25:50

你问的是两件不同的事。

  1. 问: http 8有点干净吗? 答:是的, HTTP是"bit 8干净“。
  2. 问:在web应用程序的上下文中,为什么要将图像保存为Base64? 答:图片是,而不是,通常保存在Base64中。事实上,他们几乎从来没有。它们通常以压缩二进制格式保存、传输或流(PNG或JPG或类似格式)。 Base64用于在中嵌入图像。

所以,你得到了一个图像logo.png。您可以将它静态地包含在页面中,作为<img src='logo.png'>。图像以二进制方式通过HTTP传输,浏览器和服务器端都不进行编码。这是最常见的情况。

或者,您可以决定将图像的内容嵌入到HTML中。它有一些优点:浏览器将不需要第二次访问服务器来获取映像,因为浏览器已经在HTML文件的相同HTTP响应中接收到了它。但也有一些缺点,因为HTML文件是文本,某些字符值可能对HTML (而不是HTTP)具有特殊意义,因此不能仅仅将二进制值嵌入HTML文本中。为了避免这样的碰撞,你必须对它们进行编码。最常用的编码方法是base64,它避免了开销仅占33%的所有冲突。

票数 8
EN

Stack Overflow用户

发布于 2013-09-16 14:44:57

RFC 2616的抽象声明:

HTTP的一个特性是输入和协商数据表示,允许独立于正在传输的数据构建系统。

HTTP总是以纯文本标题开头,并且在此标头中指定了内容类型。只要发送方和接收方在此内容类型上达成一致,任何事情都是可能的。

HTTP依赖于可靠的(识别字播放)传输层,如TCP。HTTPS只向传输层(或传输层和HTTP之间,不确定这一点)添加安全性。

所以是的,http是8位干净的。

除了PAs的回答和您的问题“但是为什么要使用一种编码方法来增加33%的开销,而您不需要它呢?”:因为这是另一个概念的一部分!

HTTP传输任何类型的数据,并且该http-内容可能是一个带有嵌入图片的html文件。但是,在接收到该html文件后,浏览器或其他呈现器必须解释html内容。这遵循不同的标准,这些标准要求对任意数据进行编码。html是而不是8位干净,实际上它甚至不是7位干净,因为在所使用的字符和它们的外观顺序上有很多限制。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18830083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档