HTTP头是否传输为8位干净?

HTTP头是否传输为8位干净?,http,character-encoding,http-headers,Http,Character Encoding,Http Headers,关于这一答复: 我的理解是,传输HTTP 1.1消息体是:我们可以发送任何八位字节,一个八位字节与另一个八位字节没有任何区别,这使得一个八位字节或多或少能够被正确传输。例如,我们不需要在发送消息体之前对它们进行Base64编码 我假设头(以及请求和状态行)是相同的。(参见本节最后一段),但这并不是因为头文件(例如)某种程度上不是8位干净的(ISO-8859-1是一种8位编码),而是因为出于其他原因,以这种方式对其进行规范是有意义的。所以,如果我们要将非8位ASCII字节插入到我们的头中,我们首

关于这一答复:

我的理解是,传输HTTP 1.1消息体是:我们可以发送任何八位字节,一个八位字节与另一个八位字节没有任何区别,这使得一个八位字节或多或少能够被正确传输。例如,我们不需要在发送消息体之前对它们进行Base64编码

我假设头(以及请求和状态行)是相同的。(参见本节最后一段),但这并不是因为头文件(例如)某种程度上不是8位干净的(ISO-8859-1是一种8位编码),而是因为出于其他原因,以这种方式对其进行规范是有意义的。所以,如果我们要将非8位ASCII字节插入到我们的头中,我们首先对它们进行Base64编码,因为将ASCII添加到ASCII中很容易,而其他任何操作都会(非常)复杂

我是不是遗漏了什么

(编辑:规范不允许在HTTP头中使用“任何”八位字节--)

1)请注意,您引用的文本以“历史”开头


2) 否,标头字段值不能携带“任何内容”,它们仅限于非控制字符,空格可能会被转换。

请注意,Base64编码使用=这通常是标头中的重要字符/a元字符,例如cookie标头。因此,您需要小心将Base64字符串放入哪个标题。@CraigAnderson谢谢。这里还值得注意的是,Base64有一个特殊的变体用于编码URL数据,它将“+”和“/”替换为合法字符。感谢您的澄清——这很有意义。Base64编码确保字节在此规范内(例如,不是控制字符)。但是,这与“8位清洁”无关。规范中没有故意将起始行和标题限制为7位的值,对吗?对不起,我认为这是一个非常明显的问题;我只想100%确定。更新问题,包括您的更正/澄清。