为什么/何时必须在PHP的标题末尾使用CRLF? 这是一个例子(它不一定正确):
header("method: POST\r\n");
header('Host: '.get_option('transact_url')."\r\n");
header('Content-type: application/x-www-form-urlencoded');
header('Content-length: '.strlen($transaction)."\r\n");
header($transaction."\r\n\r\n");
header("Connection: close\r\n\r\n");
header("Location: ".$key_client_url."\r\n");
答案 0 :(得分:5)
你永远不应该在header()内部进行手动换行。当前的实现删除了换行符,因此您可以安全,但这可能在将来发生变化(尽管没有理由应该更改它)。
答案 1 :(得分:3)
如果是PHP,这段代码是无稽之谈。
header()
函数用于发送 answer 标题,而其中一些标题是 request 标题。
你可以看到这段代码,因为编写它的人不知道。
答案 2 :(得分:0)
让我的登录全部混合,所以我发帖,虽然这是对halfdan的评论。如果有人可以,请随意纠正。
我在链接中看到了没有人提到你刚刚告诉我的内容,所以我认为它与Linux的行结尾有关。当然,这是我在header()中唯一一次看到“\ r \ n”。
答案 3 :(得分:0)
Halfdan是对的。 这是解释。
请求行和标题必须以CRLF结尾(即回车符后跟换行符)。空行必须只包含其他空格。
Request = Request-Line ; Section 5.1
*(( general-header ; Section 4.5
| request-header ; Section 5.3
| entity-header ) CRLF) ; Section 7.1
CRLF
[ message-body ] ; Section 4.3
答案 4 :(得分:0)
有一种方法可以将\r\n
添加到php 4中的标头,这是可以被利用的漏洞,使用CRLF注入攻击,请参阅PHP HTTP Header Multiple Vulnerabilities。