我刚刚完成调试项目的问题,每当Drupal尝试发送文件下载时,HTTP 500就会出现问题。原来,服务器认为Content-Disposition标头是坏的,因为文件名属性按RFC 2047指定的方式编码,但它只是没有\ n。所以我用r替换了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
答案 0 :(得分:1)
我在这里假设您正在讨论线路终端。
根据RFC2616 HTTP标头应以'\ r \ n'字符串(CRLF)结尾:
HTTP / 1.1将序列CR LF定义为所有的行尾标记 协议元素除了entity-body
...
generic-message = start-line
*(message-header CRLF)
CRLF
[ message-body ]
start-line = Request-Line | Status-Line
这应该终止HTTP标题行。如果你不遵守规范,服务器可以阻塞或做其他感觉就像做的事情,所以你应该与服务器无关。