sawamura-hayato / webserv

0 stars 0 forks source link

[http] リクエストの情報をHttpParseに送るかどうかを判定をどうするか?調査 #192

Open sawamura-hayato opened 3 months ago

sawamura-hayato commented 3 months ago

やりたいこと

webservはリクエストの情報をHttpParseに送るかどうかを判定をどうするか?を定義したい

仮説

リクエスト全体書式が送られたきたらHttpParseにリクエスト情報を渡すのではないか

やること

きっかけ

今後、そもそも CRLF + CRLF が buf にない場合とか、CRLF がない request_line だけの場合とかにどうすれば良いのか考えないとですね…

void HttpParse::CheckValidHttpRequest(const std::string& request_info) {
    // CRLFCRLFが見つからない場合 -> BAD REQUEWST
    // CRLFが見つからない場合 -> BAD REQUEWST
    if (std::find())

    // todo: #192 HTTP全体の書式に設定する条件文
    if (request_line_info[0].empty() || request_line_info[1].empty() ||
        request_line_info[2].empty()) {
            throw HttpParseException("Error: This request line is incomplete.", BAD_REQUEST);
    }
}
sawamura-hayato commented 3 months ago

調査結果

https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.3

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

apacheの挙動 (notionに記載)

https://lopsided-dart-1a9.notion.site/fe951eb349b742d39829efa879984330?v=cc6e1b29fdd7435680423103ecb5ac06

相談

わかっていないこと