なぜ存在しないページでも200 OKというステータスコードが返されるのか

このQ&Aのポイント
  • 本来存在しないページは「404 not found」というステータスコードが返されますが、なぜか200 OKというステータスコードが返される場合があります。
  • 存在しない動画のURLでも、なぜか200 OKというステータスコードが返されることがあります。
  • また、存在しないチャンネルのURLでも404が返されるはずなのに、200 OKが返されることがあります。
回答を見る
  • ベストアンサー

HTTPステータスコード

本来存在しないページは "404 not found" というステータスコードが返されますが、なぜか200 OK というステータスコードが返されます。 この動画のURL※1は存在するので、200 OK というステータスコードが返されますが、 https://m.youtube.com/watch?v=Z9D0xG-18Ig ※1 この動画のURL※2は存在しないので、404が返されるはずですが、200 OKというレスポンスが返ってきました。 https://m.youtube.com/watch?v=banana ※2 存在しないチャンネルのURLは 404 が返されるのですが、何故でしょうか。 HTTPステータスコードサイト↓ https://singoro.net/http-status-code/

noname#248589
noname#248589
  • PHP
  • 回答数5
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6638/9405)
回答No.5

>この記事※では > >※ この記事https://ockeghem.pageful.app/post/item/d938Fkhc2RGmZtE > >example.com/meaning/delete ・・・① >example.com/delete/meaning・・・② >で"②が404なら操作により消えたわけではありません" >"仮に削除に成功した場合 200 OKを返す"とありました。 「削除に成功する」ためには、様々な条件があります。 (1)そのサーバがURLで命令を受け付けるようになっていて (2)命令はURL末にスラッシュの後につけるとなっていて (3)delete というのが削除命令である。 本当にそのようなサーバが用意されていれば、消せるかもしれません。 しかし一般的には、その様なサーバは存在しません。 Youtubeには、その様な仕組みは入っていません。だから、URLにdeleteが含ませたからって、任意の動画を消すことは絶対にできません。 また、本当に削除できたとすれば、そもそも404になるタイミングが違います。 (1) 「youtube.com/watch?v=abcde」という動画があったとする。 この時点ではアクセスできるので、200 OK が返る。 (2) 「youtube.com/watch?v=abcde/delete」というURLで、消せたとする。 httpレスポンスとしては 200 OK 「削除動作が正常にできた」という表示がなされる。 (3) 「youtube.com/watch?v=abcde」という動画が無くなっていたならば。 watch にはアクセスできるので、200 OK が返る。そのIDを持つ動画が無いので、画面には「動画が再生できません」と出る。 どこにも404を表示するタイミングはありませんよ? 「動画が無い」ということと、「404エラーになる」ことは等しくないんですよ。 なんでわかりませんか? 何か月も同じ類の質問をして、いくつも解説と解説をしてもらって、どうして理解できないんですか?

noname#248589
質問者

お礼

ようやく理解できました。 200OK と 404エラーの違いをしっかり理解できました。 もう少し自分の読解力を上げるようにします。 同じような補足・質問を繰り返してしまい、申し訳ありませんでした。

その他の回答 (4)

回答No.4

横からですが、補足について 「削除できたら200 OK」と理解しているのが誤りです。 というか、元の記事を誤解して理解しているようです。 そのURLのパラメータが仮に正しかったとしてという意味で 「仮に削除に成功した場合は、404ではなく、200 OKを返します。」 ということであって、必ずしも200 OKなら削除できたという意味では ありません。 つまり、そのページ(またはプログラム)がないなら 404ですが ページ(プログラム)が存在するなら、URLのパラメータやその値を 間違えていても(つまり削除できなくても)200です。 なお、httpのステータスコードとしては200だけれども、 ブラウザ画面上では404 Not foundというメッセージを出す プログラムもありますが、それはそのサイトのプログラムの作り方次第です。 ですので、実際にページまたはプログラムが存在しないのか 存在するけどパラメータが正しくなくて、表示するデータがないのかは ブラウザの表示からだけでは判断できません。 さらにURLとして、ディレクトリのように一見、見えて 実際にはパラメータとして扱わせるrewriteという仕組みがあるので サーバー名/xxxx/yyyy というディレクトリにアクセスしても実際には サーバー名/?xxxx&yyyy というパラメータに置換していることもあります。 この場合、rewriteで置換されたあとの実ページ(プログラム)があれば xxxxやyyyyが正しくなくても200ですが 実ページがなければ404です。 余談ですが、 こうやって、不正なURLを試してそのステータスコードを見て、 該当するサーバーでの動作仕様を推察することはできますが、 大量にある世界のサーバーの1つのサーバーについて URLとプログラムの動作の関係がわかったところで、 他人がそれ以上なにか出来るということでもありませんので いちいち調べても意味があるようには思えませんが。。 それに、WAFとかfail2banの仕組みを導入しているサーバーだと、 不正なURLのアクセスを頻発させたら アクセス拒否されることになりますし。

noname#248589
質問者

お礼

回答ありがとうございました。

noname#248589
質問者

補足

> パラメータやその値を 間違えていても(つまり削除できなくても)200です。 つまり、 youtube.com/watch?v=11ケタのID が正規のURLで、 youtube.com/watch? v=delete が200 OKと返されたとしても、コメントが削除されないという事でしょうか。

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.3

404とか200というのは対象ファイルの有無に対するステータスコードです。 top.htmlというファイルが見つからなければ404となり、見つかれば200となる。 ご質問のケースは、プログラムを呼び出し、呼び出されたプログラムが仕様に基づいて処理した結果、利用者が求めているものが見つからなかったとしても404にはなりません。 なぜならHTTPD側から見ればリクエストのあったプログラムファイルは見つかったわけですからね。 呼び出されたプログラムは渡されたパラメーターが不正だった場合にプログラムがそれ相応のページを表示させるべきです。 ということで、HTTPDとしては正常な仕事をしているわけですから何の問題もありません。

noname#248589
質問者

お礼

ありがとうございました。

noname#248589
質問者

補足

URLパラメータに"delete"が入ってもステータスコードが200 OK なので、処理が成功という事になってしまったので、削除される事もあるのでしょうか。

  • asciiz
  • ベストアンサー率70% (6638/9405)
回答No.2

https://m.youtube.com/watch?v=banana ※2 このURLによりアクセスしているのは、m.youtube.com サーバの watch ファイルです。(まあ単純なファイルではなくてプログラムですが) そしてwatchファイルに渡されるパラメータが、「?」以降の"v=banana" です。 watchファイル自体にはアクセスできているので、200 OK レスポンスが帰ってきているわけですね。 ただしwatchプログラム上で、その動画IDを持つ動画は無いので、「動画再生できない」というエラー画面を表示していると。 純粋に「ファイルが無い」というhttp 404エラー自体ではないということです。 >存在しないチャンネルのURLは 404 が返されるのですが、何故でしょうか。 https://www.youtube.com/SONZAISINAI とかやった場合、この SONZAISINAI というファイルは本当に無いので、httpのレベルで404エラーとなります。

noname#248589
質問者

お礼

回答ありがとうございました。 少し理解出来ました。

noname#248589
質問者

補足

ご回答ありがとうございます。 補足に不備がありましたので追記させていただきます。 この記事※では ※ この記事https://ockeghem.pageful.app/post/item/d938Fkhc2RGmZtE example.com/meaning/delete ・・・① example.com/delete/meaning・・・② で"②が404なら操作により消えたわけではありません" "仮に削除に成功した場合 200 OKを返す"とありました。 そうであるならば、URLのGETパラメタで"delete"が含まれて"200 OK"が返答された場合、 youtube.com/watch?v=clear youtube.com/watch?v=delete の2つのURLでも"200 OK"が返されましたが、 アクセスしたら "動画が見れません"と表示されました。(ソフト404?) これで削除動作が起きたのでしょうか。 コメントが無い動画(0件)の動画がちらほら見かけるので、この200OKと関係しているのでしょうか。

  • agehage
  • ベストアンサー率22% (2552/11347)
回答No.1

「存在しないチャンネルのURLは 404 が返される」 これが間違い 存在しないファイルのURLは404が返される が正解 この場合はこのページにファイルがあるのです そしてそのファイルがプログラムになっていて、チャンネルの有無を確認します プログラムは「チャンネルがありません」と表示しています サーバーから見たらプログラムがあり、問題なく動いているので200 OKなのです

noname#248589
質問者

お礼

回答ありがとうございます。 解決しました。

noname#248589
質問者

補足

ご回答ありがとうございました。 ここで補足してもよろしいでしょうか。 URLにて削除に成功した場合、200OKで返答されるとありましたが、このステータスコードでも200 OKと表示されましたが、これは削除動作が起きたのでしょうか。 先程質問させていただいた下記のyoutube のURL2つは共に200 OKと返されましたが、 下記のURL※パラメータに "delete"が入っても 200 OKのが返されましたが、"この動画は再生できません"と表示されました。 当然このIDは存在しない為見れないのですが、 パラメータに"delete"を含んで 200 OKが返答されて、"この動画は見れません"とエラーが表示されても削除動作が起きたのでしょうか。 ※下記のURL https://m.youtube.com/watch?v=Z9D0xG-18Ig https://m.youtube.com/watch?v=banana 引用: https://ockeghem.pageful.app/post/item/d938Fkhc2RGmZtE

関連するQ&A

  • HTTPステータスコード

    phpでhttpリクエストを作成し、当該URLのステータスのチェックを行うプログラムを作成しました。 試作したプログラムの該当部分はこのようなものですが、 $response = $req->sendRequest(); if (!PEAR::isError($response)) { $ret = $req->getResponseCode } 同一サーバー内で、該当htmlが存在しないときは、サーバーは404を返すなど、$ret にしかるべきHTTPステータスコードを返してくれます。 ところが私の知識不足で不明なことがあります。 それは、そもそも該当URLのサーバー自体(ドメイン等)が存在しない時は、何がどういうコードを返してくれるのか、ということです。 先ほどの $ret には何も入ってきません。 このあたりご教授いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • この動画の曲のコードを教えてください

    http://www.youtube.com/watch?v=zIB9wMa5NwM どなたか上のURLの曲ユーミンの『やさしさに包まれたなら』のコード(実際に弾いている動画の)を教えてください。お願いします!

  • コードを教えてください。

    http://www.youtube.com/watch?v=idnvgIRdYhc ↑この動画で弾かれてるコードを教えてください。 海外のサイトでこの曲のコード進行が書かれているものを見たのですが、 動画で弾かれてるのとは違ってました。 http://www.911tabs.com/link/?7598561 この動画と同じように弾きたいので、分かるものでもいいので教えてください。 又、後半に出てくるパワーコード?も教えて欲しいです。 とりあえず自分で分かるのは カポ2フレット Am ぐらいでした。 大変難しいとは思いますが、こんな感じ?的なことでもいいので 教えてくれると助かります。

  • ギターコード

    YOUTUBEの​http://jp.youtube.com/watch?v=_uCrkWlGqaY​ の動画の中のギターのコードをわかる方もしわかればコツもお願いします。

  • SUMIFS関数とDSUM関数について。

    この以下のURLの動画のパターン3はSUMIFSを使うのでしょうか?教えていただけないでしょうか?すみません。 https://m.youtube.com/watch?v=ArZgPV1cXPk

  • コード譜のコードがしっくりこない

    以下のコード譜を見てギターを弾いてみているのですが、 http://gakufu.gakki.me/m/data/N01891.html サビの「近づきたい」のところのAmがしっくりきません。 原曲はこれです。 http://www.youtube.com/watch?v=fU2MLhc7N9U 誤りなのでしょうか。私の感覚が違っているのでしょうか。

  • youtubeのコメントがありません。

    youtubeの動画のコメント欄が、0になってました。 この動画 https://m.youtube.com/watch?v=A4FEDem9WOU のコメント数が10件近くありましたが、 久しぶり閲覧したら、コメントが1件もありませんでした。 これは投稿者側が一括削除したのでしょうか? また、youtubeのURLで、アドレスバーから https://m.youtube.com/watch?v=deleteと検索した事と直接関係はあるのでしょうか? 似たような質問ですみません。

  • こういう狂った感じの曲調の曲たくさん教えてください

    こういう狂った感じの曲調の曲たくさん教えてください! Feeling Myself https://m.youtube.com/watch?v=0Kg9xRooTVk Drink https://m.youtube.com/watch?v=kxAKCYSXd5U Dirty Vibe https://m.youtube.com/watch?v=Mq-aVCUs2Q0 To Ü https://m.youtube.com/watch?v=zKqY3N20ZzE Jungle Bae https://m.youtube.com/watch?v=3nKlYUy9yO4 Febreze https://m.youtube.com/watch?v=9llYgSlnti8 Take Ü There https://m.youtube.com/watch?v=C9slkeFXogU Jet Blue Jet https://m.youtube.com/watch?v=Wha1sKumYQ4 THE JOKER https://m.youtube.com/watch?v=SwkPcFW1xFM Silikon https://m.youtube.com/watch?v=TLU3xbXZC1c Booty Klap https://m.youtube.com/watch?v=XOCiKOtZzdU

  • コードについて

    http://www.youtube.com/watch?v=B-PbB9H31uo&feature=related この動画の ROLLYのコード占い なるコーナーで ジェイル大橋代官が弾いてるコードって何でしょうか? Gになにか足したのですか? 教えてくださいm(_ _)m

  • アコギGコードのハイロー以外のコードの押さえ方

    アコギGコードのハイロー以外のコードの押さえ方 http://www.youtube.com/watch?v=CgpXjR7aTpg この動画ですが、Gコード、ハイコードでもローコードでもないですよね。 どういう押さえ方してるのでしょうか?

専門家に質問してみよう