参考这个答案:
https://stackoverflow.com/a/20309097/99717
我的理解是,传输HTTP 1.1消息体是8-bit clean:我们可以发送任何八位字节,并且没有任何关于一个八位字节的其他八位字节,这使得一个或多或少可能被正确传输。我们不需要,例如,Base64在发送邮件之前对其进行编码。
我假设标题(以及请求和状态行)是相同的。 Headers are historically spec'd ISO-8859-1, and the spec now recommends US-ASCII(参见本节的最后一段),但这不是因为标题,例如,某种程度上不是8位清洁(ISO-8859-1 是 8-比特编码),但因为其他原因,以这种方式规范它们是有道理的。因此,如果我们要将非8位ASCII字节粘贴到我们的标头中,我们首先对它们进行Base64编码,因为它很容易将ASCII添加到ASCII中,而其他任何操作都是(方式)更复杂。
我在这里错过了什么吗?
(编辑:规范不允许" HTTP标头中的任何"八位字节 - it limits valid octets)
答案 0 :(得分:1)
1)请注意,您引用的文字以"历史性"。
开头2)不,标题字段值不能携带"任何",它们仅限于非控制字符,并且空格可能会被转换。