Php 为什么我们需要在传输之前对图像进行base64编码?

Php 为什么我们需要在传输之前对图像进行base64编码?,php,http,base64,Php,Http,Base64,可能重复: 我见过许多代码片段,它们在通过HTTP协议传输之前对图像进行base64编码 我想知道为什么我们需要它?HTTP协议不能保证是“8位干净的”,因此它可能会损坏二进制流。这不是必需的,但它可以让您在不执行额外HTTP请求的情况下嵌入图像(在某些情况下,这是不可能或不允许的)。来自维基百科的以下条目: 术语Base64指的是特定的 MIME内容传输编码。它是 也用作任何 编码的类似编码方案 通过对二进制数据进行数值处理 并将其转换为基数64 代表性。特殊选择 基地的存在是由于历史的原因

可能重复:

我见过许多代码片段,它们在通过HTTP协议传输之前对图像进行base64编码


我想知道为什么我们需要它?

HTTP协议不能保证是“8位干净的”,因此它可能会损坏二进制流。

这不是必需的,但它可以让您在不执行额外HTTP请求的情况下嵌入图像(在某些情况下,这是不可能或不允许的)。

来自维基百科的以下条目:

术语Base64指的是特定的 MIME内容传输编码。它是 也用作任何 编码的类似编码方案 通过对二进制数据进行数值处理 并将其转换为基数64 代表性。特殊选择 基地的存在是由于历史的原因 字符集编码:可以选择 一组64个字符,同时包含两个字符 大多数人共有的子集的一部分 编码,也可打印。这 这种组合使得数据不太可能 在运输过程中通过 系统,例如电子邮件 传统上不是8位的干净

特别是关于HTTP:

Base64编码在以下情况下很有用: 相当长的识别信息 在HTTP环境中使用。对于 例如,数据库持久化 Java对象的框架可能使用 Base64编码,对相对 大的唯一id(通常为128位 UUIDs)转换为字符串以用作 HTTP表单中的HTTP参数或HTTP 获取URL。此外,许多应用程序需要 以一种 便于包含在URL中, 包括在隐藏的web表单字段中, Base64是一种方便的编码 不仅以紧凑的方式呈现它们, 但是在一个相对不可读的 当试图模糊 来自偶然的人类观察者的数据


你能解释一下HTTP为什么不是8位干净的吗?服务器如何知道?它是在请求头中指定的吗?这是错误的。您可以在HTTP中发送任何内容body@wic,您能告诉我在HTTP规范中,它在哪里保证连接是8位干净的,因为我找不到它。RFC 2616,第7.2节()@Julian,我在那里或文档中的任何其他地方都看不到这种保证。事实上,传输编码部分的出现正是因为没有这样的保证。你的报价太棒了!但是它没有解释为什么在base64中传输图像?你是说使用数据URI方案?