メモ

新たなHTTPステータスコード「308」とは?

By Eva Ekeblad

ネットでさまざまなウェブサイトをめぐっていると、「404 Not Found」や「503 Service Unavailable」などの表示を目にしたことがある人も多いはず。この3桁の数字とメッセージの組み合わせは「HTTPステータスコード」と呼ばれ、インターネット技術の最も基本的な仕組みの一部です。1990年代初めに最初の骨組みが作られた仕組みですが、新たに「308 Permanent Redirect(恒久的リダイレクト)」というコードが追加されようとしています。

Pushing the Web Forward with HTTP/308 - IEInternals - Site Home - MSDN Blogs
http://blogs.msdn.com/b/ieinternals/archive/2012/03/29/http-308-permanent-redirect-pushing-the-web-forward-by-breaking-unwanted-forward-compatibility.aspx

一見すると何の問題もなくスムーズに動いているように見える現在のインターネットの技術は、じつはあちこちにつじつま合わせの「つぎはぎ」が多く存在している状態となっています。1990年代に開発されて世に出回りはじめたNetscape Navigatorなどのブラウザの多くは、とりあえずウェブの画面を外見上は問題のない形で表示できるように仕立て上げられたものあり、2014年の段階においても、その影響は一部残ったままとなっています。

◆「3xx コード」とは
HTTPステータスコードで用いられている3桁の数字のうち、1桁目が「3」で始まるものは「リダイレクション」と呼ばれるグループに分類されています。たとえば、あるページを閲覧しようとしてリンクをクリックすると、ブラウザがサーバに対して接続要求(HTTPリクエスト)を送信し、サーバはこれに対して何らかの返答(HTTPレスポンス)を返します。このとき、希望していたウェブサイトが移転などで存在しない場合に、サーバから返される「希望のページはここにはありません。○○に移動(リダイレクト)してください」という返答がリダイレクションのステータスコードとなっています。一般的なものが「301リダイレクト」と呼ばれるもので、ウェブサイトが新しいドメインに(永久的に)移動し、旧ドメインに送られた接続要求を全て新しい方へとリダイレクトさせる場合にこのコードが使用されます。301に関しては下記ページが参考になります。

301 リダイレクト - ウェブマスター ツール ヘルプ
https://support.google.com/webmasters/answer/93633?hl=ja

301(Moved Permanently:恒久的に移動)の一方、サイト改修などで「一時的に」別のページへリダイレクトさせるような場合に用いられるのが「302(Found:発見した)」および「307(Temporary Redirect:一時的リダイレクト)」のコードとなっています。しかしここで「『永久的』や『一時的』ということを、一体誰に対して伝える必要があるのか」と疑問を抱くこともあるかもしれません。これはむしろ、サイトを閲覧する人間のためではなく、Googleなどの検索エンジンが検索用のインデックスを作成するためのプログラムであるクローラに対してのためのもの。検索エンジンがウェブページのランク付け(ページランク)を行う際に、コードの種別から「このページは新しいドメインに移動したということだ。よし、元のページが持っていたランキング資産をそのまま移動させよう」などの判断を行うための要素となり、ランキングの精度を高めるために非常に重要な役割を果たすものとなっています。

By Katherine Johnson

当初は301と302が主に使われていたリダイレクトのコードですが、運用が広まるうちにさまざまな問題や矛盾が生じるようになってきます。特に302(一時的リダイレクト)の場合には、本来の用法ではなく掲示板などで他のURLに転送したいときにもこのコードを使用するという行為が横行するようになったため、新たに303(See Other:他を参照)や307(Temporary Redirect:一時的リダイレクト)などの新たなコードが制定されました。

◆メソッドの書き換え
ブラウザなどのWEBクライアントからサーバへ送られる接続要求(HTTPリクエスト)には、大きく2つの種類のものが使われています。GETメソッドPOSTメソッドと呼ばれるものなのですが、それぞれのデータの持ち方の違いによって異なった使われ方をしています。GETメソッドはURL情報など比較的単純な内容を含むのに対し、POSTメソッドには内部に大きなデータやファイルを含ませることができるため、サーバにデータを送信したり、フォーム情報やID・パスワード情報などを含ませることも可能となっています。

サーバによって「3xx」リダイレクトのレスポンスが返された際、このメソッドが変更されてしまうことがあります。POSTメソッドにはより機密性が高い情報が含まれることになるため、GETメソッドに変更されてしまうとさまざまな問題を生じさせる可能性が高くなってしまうのですが、これは、当初の301(恒久的)や302(一時的)のコードでは書き換えに関する規定があいまいだったために発生した問題です。そこで、新たなコードではメソッド書き換えに関する規定を明確化させることになり、302には307が充てられ、そして301をより厳密にするものとして新たに提唱されることとなったのが、「308」というわけです。


なお、このステータスコード308は、現在作成中のインターネットドラフトの中で提唱されているものであるため、最新のFirefox以外の多くのブラウザではまだ未対応となっています。現在使用中のブラウザが対応しているかどうかは、以下のページにアクセスして試してみることが可能です。

308リダイレクト
http://webdbg.com/test/308/

この記事のタイトルとURLをコピーする

・関連記事
Googleが検索結果の90%に影響する新検索アルゴリズム「Hummingbird」を導入 - GIGAZINE

Googleが重いペナルティを課したブラックな検索エンジン対策とは? - GIGAZINE

Google検索を支える「Googlebot」がAJAX・JavaScriptのクリックに対応、現実のユーザーっぽい挙動が可能に - GIGAZINE

超危険なパスワードをセキュリティ的に安全なパスワードに変える作成方法 - GIGAZINE

Adobeから流出したパスワードでよく使われていたものトップ100が公開される - GIGAZINE

Googleは1つの検索クエリーに対し、1000台のマシンを使って0.2秒で処理している - GIGAZINE

in メモ,   ネットサービス, Posted by darkhorse_log

You can read the machine translated English article here.