1

我刚刚完成了一个项目的问题调试,每当 Drupal 尝试发送要下载的文件时,HTTP 500 就会上升。结果服务器认为 Content-Disposition 标头不好,因为文件名属性按照 RFC 2047 指定的方式编码,但它只是没有 \n。所以我用 r 替换了 n ,现在服务器非常高兴。

所以我想知道这个服务器是否对待 \n 与 \r 不同,以及我将来如何判断和/或为什么 \r 会工作而 \n 不会?

编辑:脚本发送的标头:

X-Powered-By: PHP/5.3.17
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified: Wed, 14 Nov 2012 20:43:20 +0000
ETag: "1352925800"
Content-Length: 1302854
Content-Disposition: attachment; filename="=?UTF-8?B?UHJvUXVhbGl0ZSBNYW51ZWwgZGVzIHByb2dyYW1tZXMgcHLDqWFsYWJsZXMgMjA=?=
 =?UTF-8?B?MTAgYXZlYyBhbm5leGVzXzBfMC5wZGY=?="
Cache-Control: private
Content-type: application/pdf
4

1 回答 1

1

我在这里假设您正在谈论线路终止。

根据RFC2616 HTTP 标头应以 '\r\n' 字符串 (CRLF) 结尾:

HTTP/1.1 将序列 CR LF 定义为除实体主体之外的所有协议元素的行尾标记

...

generic-message = start-line
                  *(message-header CRLF)
                  CRLF
                  [ message-body ]
start-line      = Request-Line | Status-Line

这就是应该终止 HTTP 标头行的内容。如果您不遵循规范,服务器可能会窒息或做其他感觉喜欢做的事情,因此与服务器无关,您应该这样做。

于 2012-11-14T20:20:38.853 回答