\ r \ n和\ n之间有什么区别?

时间:2012-03-07 15:53:53

标签: character-encoding control-characters

在终端中,两者似乎没有区别

echo -en 'first\r\nsecond'echo -en 'first\n\second'

但是在没有\ r的代码中它不起作用

echo -en 'GET /test HTTP/1.1\r\nHost: localhost\r\n\r\n' | nc localhost 9292 

有效,但

echo -en 'GET /test HTTP/1.1\r\nHost: localhost\n\n' | nc localhost 9292 

任何人都可以解释它为什么会这样?

1 个答案:

答案 0 :(得分:1)

某些应用程序可以同时处理\ r \ n(a.k.a. CRLF,回车换行符)和\ n(a.k.a.LF,换行符)作为换行符序列。你的终端就是一个例子。

HTTP/1.1 Specification表示HTTP标题行始终以CRLF结尾。因此,遵守规范的HTTP服务器(例如您在localhost:9292上运行的服务器)将不会将LF本身解释为有效的HTTP标头行终止序列。