助け合いフォーラム

Cisco

CCNP ENCOR(350-401)
問題ID : 27017
問題を開く
ステータスコード「400 Bad Request」の原因として最も適していると考えられるものはどれか。

この問題はプレミアムコンテンツです。

上に戻る

「400 Bad Request」の原因について

投稿日 2023/05/01

上記問題の正答の選択肢「リクエストで指定するURIの構文が間違っている」の細部について、質問させてください。
直感的にはURIが誤っていると、存在しないリソースを指すことになるので、該当するHTTP応答のステータスコードは
404になる様に思われます。

これを考慮にいれますと、上記選択肢の「URIの構文が間違っている」とは、GETのリクエストラインの?以降のクエリ部分
が誤っているという意味であり、URI誤りで400になるのはGETのリクエストラインでのクエリ部分誤りの場合のみで
その他の場合(GETの?より前の部分や他のメソッドでのURI誤り)の場合には、404になるとの理解であっているでしょうか。

すみませんが、ご存じの方がいらしたら、教えてください。
よろしくお願いします。

2023/05/01 21:17

おおよそその理解であっていると思いますが、常に必ずそうとは限りません。

というのは、CGI などの動的Web アプリケーションの場合は、どのようなHTTP ステータスコードを返すかは開発者が自由に決められるためです。GET の?より前の部分に誤りがあったときに、HTTP 403ではなくHTTP 400を返すようにプログラミングされたWeb アプリケーションもあるかもしれませんし、Web アプリケーション側のバグにより不適切な場面でHTTP 400が返されることも考えられます。

厳密なルールというよりも、ガイドライン的なものと考えるのがいいかもしれません。


コメント

k kz5835

2023/05/01 21:28

tnishita2様 ご回答、有難うございます。おかげさまで、概ね、理解できました。 すみませんが、「GET の?より前の部分に誤りがあったとき」と「CGI などの動的Web アプリケーション」との関係について、質問させてください。 もし、GET の?より前の部分に誤りがありますと、正しいURIが指し示すWeb アプリケーションに情報が届かず、そのWebアプリケーションからの応答は返らないということにはならないのでしょうか。 もし、可能でしたら、教えて下さい。 宜しくお願いします。

t tnishita2

2023/05/01 22:08

今どきのWeb アプリケーションでは、例えば日記Web アプリがあったとして、そのURL が https://diary.example.com/2023/05/01?mode=write のように、URL の?の後ろだけではなく、パスの途中に日付として2023/05/01のようなパラメーターを使うものがあります。この場合、例えば https://diary.example.com/2023/05/32?mode=write のように存在しない日付を指定したときに、Web アプリには情報が届きますが、 HTTP 400を返すような場合があるかな、と思って回答しました。

k kz5835

2023/05/01 22:24

tnishita2様 ご回答、有難うございます。なるほど、そういうケースがあるのですね。大変、勉強になりました。有難うございました。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?