В чем разница между \ r \ n и \ n - PullRequest
0 голосов
/ 07 марта 2012

В терминале кажется, что нет никакой разницы между двумя

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 Ответ

1 голос
/ 07 марта 2012

Некоторые приложения могут обрабатывать как \ r \ n (также известный как CRLF, перевод строки назад), так и \ n (также известный как LF, перевод строки) как последовательности новой строки.Ваш терминал является примером.

Спецификация HTTP / 1.1 требует, чтобы строки заголовка HTTP всегда заканчивались CRLF.Таким образом, HTTP-сервер, который придерживается спецификации (например, тот, который вы запускаете на localhost: 9292), не будет интерпретировать LF как действительную последовательность завершения строки заголовка HTTP.

...