0

ターミナルでは、2つの間に違いはないようです

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 

しません

誰でもそれがなぜであるか説明できますか?

4

1 に答える 1

1

一部のアプリケーションは、\ r \ n(別名CRLF、キャリッジリターンラインフィード)と\ n(別名LF、ラインフィード)の両方を改行シーケンスと同等に処理できます。あなたの端末は一例です。

HTTP / 1.1仕様では、HTTPヘッダー行は常にCRLFで終わるように規定されています。したがって、仕様に準拠しているHTTPサーバー(localhost:9292で実行しているサーバーなど)は、LF自体を有効なHTTPヘッダー行の終了シーケンスとして解釈しません。

于 2012-03-07T16:07:20.370 に答える