Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的服务器在头上有一个“"\";字符,但不是“字符”\r";性格_Php_Http Headers - Fatal编程技术网

Php 为什么我的服务器在头上有一个“"\";字符,但不是“字符”\r";性格

Php 为什么我的服务器在头上有一个“"\";字符,但不是“字符”\r";性格,php,http-headers,Php,Http Headers,我刚刚完成了一个项目的调试,在这个项目中,每当Drupal试图发送文件下载时,HTTP 500就会出现问题。结果表明,服务器认为内容处置头是坏的,因为filename属性是按照RFC 2047指定的方式编码的,但它只是没有\n。所以我用r替换了n,现在服务器非常满意 因此,我想知道此服务器处理\n是否与\r不同,以及我将来如何判断和/或为什么\r可以工作和\n不能工作 编辑:脚本发送的标题: X-Powered-By: PHP/5.3.17 Expires: Sun, 19 Nov 1978 0

我刚刚完成了一个项目的调试,在这个项目中,每当Drupal试图发送文件下载时,HTTP 500就会出现问题。结果表明,服务器认为内容处置头是坏的,因为filename属性是按照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

我想这里你说的是线路终止

根据HTTP,标头应以“\r\n”字符串(CRLF)结尾:

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


这就是应该终止HTTP头行的内容。如果您不遵守规范,服务器可能会阻塞或执行它想执行的其他操作,因此与服务器无关,您应该这样做。

我假设您在这里谈论的是线路终止

根据HTTP,标头应以“\r\n”字符串(CRLF)结尾:

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


这就是应该终止HTTP头行的内容。如果您不遵守规范,服务器可能会阻塞或执行它想执行的其他操作,因此与服务器无关,您应该这样做。

哪台服务器?阿帕奇?nginx?iis?我以为头文件必须以在FreeBSD上运行的@MarcB Apache结尾。@Dagon是的,它们是。RFC 2047说,编码的单词也应该用CRLF空间序列来分隔。Apache将LF视为CRLF,显然,使用CRLF+LWP在带引号的字符串中导致页眉折叠是不合适的。谁能责怪它?哪个服务器?阿帕奇?nginx?iis?我以为头文件必须以在FreeBSD上运行的@MarcB Apache结尾。@Dagon是的,它们是。RFC 2047说,编码的单词也应该用CRLF空间序列来分隔。Apache将LF视为CRLF,显然,使用CRLF+LWP在带引号的字符串中导致页眉折叠是不合适的。谁能责怪它呢?我在中看到了这一点,但似乎以“\r”结尾的块很好,但没有那么多“\n”,这正是我真正好奇的地方。@mikemcg这只是未定义的行为。它可以“很好”工作,也可以阻塞——这取决于实现。
\r
\n
本身仍然是错误的。好吧,这是规范,然后是任何微粒软件决定“解释”的方式specs@eis同时显式使用“\r\n”似乎也会导致500个错误,这似乎是唯一有效的方法。有什么方法可以确定控制字符或类似的行为吗?@mikemcg您能在问题本身上添加一个HTTP请求/响应示例,它似乎会导致500错误吗?我在中看到了这一点,但对于以“\r”结尾的块似乎没什么问题,但不是太多“\n”这就是我真正好奇的地方。@mikemcg,那只是一种未定义的行为。它可以“很好”工作,也可以阻塞——这取决于实现。
\r
\n
本身仍然是错误的。好吧,这是规范,然后是任何微粒软件决定“解释”的方式specs@eis同时显式使用“\r\n”似乎也会导致500个错误,这似乎是唯一有效的方法。有什么方法可以确定控制字符或类似的行为吗?@mikemcg您能在问题本身上添加一个HTTP请求/响应示例,它似乎会导致500错误吗?
generic-message = start-line
                  *(message-header CRLF)
                  CRLF
                  [ message-body ]
start-line      = Request-Line | Status-Line