∀ddict

I'm a Japanese otaku. I like Manga, Anime, Games and Comics.

HTTPパンティーに学ぶ女性とサーバの反応

id:sanakanさんからこんなものを教えてもらった

「HTTPパンティ : Gizmodo Japan(ギズモード・ジャパン)」
http://www.gizmodo.jp/2007/02/http.html

このHTTPパンティーを簡単に説明するとサーバにHTTPでアクセスしたときにサーバが返すメッセージがプリントされているパンティーなのだ。「今夜どう?」という男性のメッセージへの返事がパンティーに書いてあるという具合です。もっとも、よほど理解がないとはいてもらえそうにありませんが。

気になるパンティーにプリントされたメッセージの意味は以下のとおり

200 OK

200番代のメッセージが彼女から返ってきたらひとまずは安心です。流行りのAjaxでアクセスした男性はOKのメッセージが返ってきても慌てずに彼女の準備ができるまで待ちましょう。タイミングが早過ぎると思わぬトラブルが起こりがちです。

解説

200番が帰ってきたということはリクエストは正常に処理されました。普段ブラウザでWebページ(HTMLなど) を見ているときには目にすることはありませんが、実際にはHTTPでやり取りをしている際には200番が返ってきています。

Ajaxの話はXMLHttpRequestでのアクセスの話。JavascriptXMLHttpRequestオブジェクトを生成するときに例えば以下のような条件文を書くはずです。

var xmlhttp = new XMLHttpRequest(); // IE向けの処理は省略

xmlhttp.onreadystatechange = function() {
  if(xmlhttp.status == 200 && xmlhttp.readyState == 4) {
    // 処理
  }
}

if文中で200番が帰ってきて、かつreadyStateが4になったとき、つまりXMLHttpRequestでの読み込みが終了したときに初めてそのデータの処理を行うということ。


300番台はいったん飛ばして次は400番台。彼女から400番のメッセージが返ってきたら要注意。何かしでかしたかもしれません。

403 Forbbiden

いきなり最もキツいメッセージ。「無理!」と言われているわけです。そもそも対象外だったのか、今はまだダメなのかは時間が経たないと分かりません。今はただ時間が解決してくれるのを待つのみです。

解説

403が帰ってきた場合はサーバにあるファイルに対するアクセス権限がありません。あなたがサーバ管理者でページを見れなくて困っている場合にはシェルで

chmod o+r filename

とでもすれば良いでしょう。

この意味が分からない人はFTPソフトに「読み込み」「書き出し」「実行」という項目があるはずなので、読み込み権限を付加してやるとよいでしょう。

411 Lenght Required

何やら男性にはこたえるメッセージ。焦って迫ってはいけません。段取りをきちんと踏みましょう。

解説

411はContent-Lengthが指定されてないことによって返ってくるレスポンス。Content-LengthはHTTPのヘッダに記載されている情報。携帯電話向けのCGIやC/C++でCGIを書いたことがある人ならContent-Lengthや411に見覚えがあるかもしれません。

413 Requested Entity Too Large

誇るべきか落ちこむべきか。彼女とはマッチングしなかったようです。どちらが原因かは分かりませんが、彼女にとっては大きすぎたようです。

解説

413はサーバが想定しているデータ量や処理しきれるデータ量を超えたリクエストに対して返されるレスポンス。



さて、HTTPパンティーにはありませんでしたが、RFC2616に規定されているHTTPリクエストに対するHTTPレスポンスはまだまだあります。

「HTTP/1.1: Status Code Definitions」
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

この中からいくつかを他にも色々紹介してみます。

400 BadRequest

彼女が理解できないような事を言ってしまったようです。あなたの表現が詩的すぎたのかもしれません。韻を踏んで繰り返す必要はありません。一度で言い直しましょう。

解説

シンタックスが違うリクエストや変なリクエストを何回も送っていると返ってくるレスポンス。例えば「~(ティルダ)」をエンコードしたときに「%7E」になるところを「%7」と打ち込むと返ってくることも。

404 Not Found

この期に及んで彼女以外の名前を呼んでしまった場合は当然アウト。今度はあなたが責めたてられて彼女に返答する番かも。

解説

サーバ上にないファイルにアクセスしようと返ってくるレスポンス。主にスペルミスが原因。

414 Request URI Too Long

リクエストの言葉もほどほどに。せっかく彼女がその気でも長すぎると退屈してその気も失せます。

解説

サーバが予定している以上のURL長になったときに返ってくるレスポンス。WikipediaなどURLがかなりの長さになっている場合もあるが、このレスポンスが返ってくるのはサーバが攻撃を受けているなどの理由で処理するURL長を制限している場合など。


500番台は彼女の側に都合があるということです。理不尽な返事が返ってきてもイライラしながらをリクエストを連発してはいけません。状況は更に悪化します。

503 Service Unavailable

彼女はどうやら忙しいようです。そっとしておいてあげましょう。リトライは日を改めてからしつこすぎる男は嫌われます。

解説

サーバの負荷が大きいときにこれ以上リクエストを受け付けないようにこのレスポンスが返ってくる。間違ってもF5を連打しないこと。最悪DoS攻撃と取られることも。


あとがきとか

当初は13万ヒット企画として計画していたのですが、忙しくて作るのも遅れてこんな感じになりました。書き直してると自分では面白いのか面白くないのか分からなくなってしまいましたが、楽しんでいただければ幸いです。