Q1: HTTP/1.1のmessage grammarでheader sectionの終わりを示すのはどれ
Multiple Choice
**Explanation:**
header section, empty line, CRLF. HTTP/1.1では, headerの終端とbodyの開始は空行で区切られる.
header sectionの終端が曖昧だと, 同じbyte列をproxyとoriginが異なるmessageとして解釈し, request smugglingにつながり得ます.
最後のheader fieldの後に, CRLFだけの空行が来ることでheader sectionが終了します. ここを基準に body の開始位置が決まるので, line ending の扱いは単なる書式ではなく framing そのものです.
- A (incorrect): Content-Lengthはbodyの長さのヒントで, header sectionの終端ではない.
- B (incorrect): そのCRLFは1本のfield lineを終えるだけです. sectionの終端には空行を表すもう1つのCRLFが必要です.
- C (correct): 空行が区切りになる.
終端解釈のズレはrequest smugglingの原因になり得ます. だから RFC 9112 は, 些細に見える改行規則をかなり丁寧に定義しています.