与 text/plain ContentType 一起使用的正确换行符是啥?

Posted

技术标签:

【中文标题】与 text/plain ContentType 一起使用的正确换行符是啥?【英文标题】:What is the correct newline to use with text/plain ContentType?与 text/plain ContentType 一起使用的正确换行符是什么? 【发布时间】:2015-08-11 17:16:44 【问题描述】:

当网络服务器在 HTTP 响应中声明 ContentType: text/plain 时,客户端是否可以假定换行符是 '\n' 或 '\r\n' 等其他内容,还是应该允许两者?

有哪些标准规定?我对标准感到迷茫和困惑。 RFC 2046 似乎定义了“普通”子类型,但这里指的是 RFC 822。

我已经浏览了 RFC 822,但我很困惑它是否明确表示不允许 CRLF (\r\n)(在消息正文中),或者是否应该隐式允许 CRLF,因为任何 ASCII 字符都是合法的在空行之后?

RFC 5322 定义了“互联网消息格式”,我不确定这是否适用于 HTTP(它似乎适用于电子邮件),但它特别指出您应该看到的消息正文中的唯一 CR 或 LF 是 CRLF组合..?

【问题讨论】:

【参考方案1】:

RFC 2046 第 4.1.1 节说:

“任何 MIME“文本”子类型的规范形式必须始终将换行符表示为 CRLF 序列。类似地,在 MIME“文本”中出现的任何 CRLF 都必须表示换行符。在行外使用 CR 和 LF中断序列也是被禁止的。”

老实说,如果您将其用于解析或显示目的,我不会依赖它。大多数网络服务器会从文件扩展名中设置内容类型,因此任何具有 .txt 扩展名的 Unixy 文件都将获得 text/plain 内容类型(就上面的段落而言,这是非法的)。

【讨论】:

以上是关于与 text/plain ContentType 一起使用的正确换行符是啥?的主要内容,如果未能解决你的问题,请参考以下文章

WebApi v2 不接受 text/plain 媒体类型

内容类型'text/plain;charset = UTF-8'在RestController类中的spring boot中不支持错误

soapui 怎么设置response的content-type

http请求头content-type类型常见值

HTTP协议:Content-Type

后台post请求