2012-03-07 3 views
0

В терминал похоже нет никакой разницы между этими двумяКакая разница между г п и п

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

но в коде без \ г не работает

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

См. Http://stackoverflow.com/questions/3091524/what-are-carriage-return-linefeed-and-form-feed – Zaki

ответ

1

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

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

Смежные вопросы