Open sawamura-hayato opened 3 months ago
リクエスト情報の文字列をreadで読み込み、HttpParseクラスに渡す判定は各書式ごとに処理を行っている。リクエスト情報をリクエストラインの書式(CRLF)まで読み込み、メソッド、リクエストターゲット、バージョンがそれぞれ書式通りかどうか?をパースする。次にヘッダーフィールドの書式まで(CRLF CRLF)までを読み込み、書式通りかどうかをパースする。Content-Lengthがある場合はボディーメッセージまで読み込む。読み込みの待機中が続く場合は408 Request Timeoutをレスポンスとして返す。 HTTPリクエストの書式が正常だった場合、値が正常かどうかを確認する。
メッセージボディはContent-Length or Transfer-Encodingのヘッダーフィールドがないとボディーメッセージを読み込まない。
The presence of a message body in a request is signaled by a Content-Length or Transfer-Encoding header field
https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.3
A client MUST send a Host header field in all HTTP/1.1 request messages.
A server MUST respond with a 400 (Bad Request) status code to any HTTP/1.1 request message that lacks a Host header field and to any request message that contains more than one Host header field or a Host header field with an invalid field-value. https://datatracker.ietf.org/doc/html/rfc7230#section-5.4
"GET / HTTP/1.1\r\n"
"GO:\t lll\r\n"
"Host:\t" + std::string(server_ip) +"\r\n\r\n"
やりたいこと
webservはリクエストの情報をHttpParseに送るかどうかを判定をどうするか?を定義したい
仮説
リクエスト全体書式が送られたきたらHttpParseにリクエスト情報を渡すのではないか
やること
きっかけ