这里概述了8位清洁的含义。
在web应用程序的上下文中,为什么要将图像保存为Base64?与保持8位清洁相关的开销为33%。
如果传输方法是安全的,则不需要这样做。
但是基本上,我的图像保存在服务器上的Base64中,并传输到客户端,众所周知,客户端可以读取Base64。
以下是SO中Base64的客户端版本。
http/https 8位干净吗?
参考文献
发布于 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、电子邮件等)。
我正在考虑编写另一种编码类型,以消除开销。
祝你好运:-)
发布于 2013-09-16 15:25:50
你问的是两件不同的事。
所以,你得到了一个图像logo.png。您可以将它静态地包含在页面中,作为<img src='logo.png'>。图像以二进制方式通过HTTP传输,浏览器和服务器端都不进行编码。这是最常见的情况。
或者,您可以决定将图像的内容嵌入到HTML中。它有一些优点:浏览器将不需要第二次访问服务器来获取映像,因为浏览器已经在HTML文件的相同HTTP响应中接收到了它。但也有一些缺点,因为HTML文件是文本,某些字符值可能对HTML (而不是HTTP)具有特殊意义,因此不能仅仅将二进制值嵌入HTML文本中。为了避免这样的碰撞,你必须对它们进行编码。最常用的编码方法是base64,它避免了开销仅占33%的所有冲突。
发布于 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位干净,因为在所使用的字符和它们的外观顺序上有很多限制。
https://stackoverflow.com/questions/18830083
复制相似问题