HTTP内容类型标头中是否必须使用charset组件?

时间:2018-03-29 09:11:47

标签: http http-headers

HTTP请求可能包含Content-Type标题:

GET / HTTP/1.1
...
Content-Type: text/xml; charset=utf-8
...

是否存在charset组件必须包含的情况?万一,何时?

可能的Content-Type标头示例,不一定正确:

Content-Type: text/xml
Content-Type: charset=utf-8
Content-Type: text/xml; charset=utf8
Content-Type:

标准信息:

编辑注意:似乎这个参考已经过时,RFC 7231现在是正确的版本,正如@RobbyCornelissen所建议的那样。

标准对这一点说的很少(或者我看错了地方):https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

  

14.17内容类型

     

Content-Type entity-header字段表示媒体类型   实体主体发送给收件人,或者在HEAD方法的情况下,   如果请求是GET,则会发送的媒体类型。

   Content-Type   = "Content-Type" ":" media-type
     

媒体类型在3.7节中定义。该领域的一个例子是

   Content-Type: text/html; charset=ISO-8859-4
     

进一步讨论识别媒体类型的方法   实体在第7.2.1节中提供。

1 个答案:

答案 0 :(得分:1)

请参阅RCF 7231, Appendix B. Changes from RFC 2616

  

ISO-8859-1的默认字符集用于文本媒体类型      删除; 现在默认为媒体类型定义。      同样,ISO-8859-1的特殊处理已被删除      Accept-Charset标头字段。 (第3.1.1.3节和第5.3.3节)

因此它取决于给定媒体类型的默认字符集/编码。您可以查找media type registry with IANA,例如application/xml media type,其链接到RFC 7303 Section 3

  

多达三个不同的角色信息来源      可以为XML MIME实体提供编码:charset参数,      BOM(参见下面的第3.3节)和XML编码声明(参见      [XML]的第4.3.3节)。确保这些来源之间的一致性      需要实体作者和MIME代理之间的协调(即      是,打包,传输,传递和/或接收MIME的进程      实体)。

     

对于所有XML MIME,建议使用不带BOM的UTF-8      实体。

所以不,它不是强制性的,但如果省略,则取决于特定的媒体类型,如何检测它。