300

状態符号 300 (HTTP)

[313] 300 は、複数の代替表現が存在することを示す状態符号ですが、 あまり使われていません。

仕様書

意味

[304] 300 は、対象資源が1つ以上の表現を持ち、 それぞれが独自の識別子を持っており、その識別子要求リダイレクトすることで利用者 (または利用者エージェント) が好ましい表現を選択することができるような情報が提供されていることを示します。すなわち、利用者エージェントreactive negotiation によって最適な表現を選ぶことを求めていることを表します。 >>303

構文

[305] 好ましい (prefer) 選択肢を有する時は、 その URL を含む Location:生成するべきです >>303

[307] は、HEAD 以外の要求メソッドの場合、 利用者または利用者エージェントが最も好ましい表現を選べるような表現メタデータURL の一覧を含んだ payload生成するべきです >>303

[8] しばしば Alternates: ヘッダーと併用されますが、 300 を使うために必須ではありません。

文脈

[11] 300リスト応答に最も適切な状態符号 >>10 とされています。

[7] 300HTCPCP-TEAが提供できるの種別を示すために Alternates: ヘッダーとともに用いられます >>6

処理モデル

[306] クライアントは、 Location: ヘッダーがあれば、 自動リダイレクトに使って構いません >>303

[314] 未知の 3xx 状態符号300 と同じように扱うことが求められていますが、同時に 3xx 状態符号Location: によりリダイレクトすることも認められています。 従って >>306 は未知の 3xx 応答にも適用されます。

[308] クライアントは、 payloadMIME型を理解できるなら、 >>307 のリストから自動的に選択しても構いません >>303

[309] ただしそのようなMIME型HTTP としては特に定義していません。 構文解析しやすい形式を選んでも構いませんし、 広く用いられているハイパーテキスト形式を使っても構いません >>303

[310] 300 応答は、キャッシュ可能です。

[311] かつて URI: ヘッダーAlternates: ヘッダーが提案されていましたが、広く相互運用可能に実装されることがなく、 HTTP 本体仕様書からは削除されています >>303
[312] HTTP 仕様書は Link: ... rel=alternate を使う可能性にも言及していますが、広く実装されるかには疑問も呈しています >>303

実装

[3] HTTP/1.0 クライアントの中には 300 応答を黙って無視するものがある >>10 といわれています。

[12] そのため 300 のかわりに 200 を使っても良いとされています。

[9] W3Cメーリングリストアーカイブでは、メッセージID によってメールを表示するURLにアクセスした際、 複数のメーリングリストに投稿されたメールだった場合に、 各メーリングリストにおける当該メールを表す URL の一覧を含むHTML文書300 応答で返します。

特別なヘッダーなどは出力しないようです。

[1] 元々一般利用を考慮してなかったという歴史的背景もあってか、 この応答符号が使われているのはあまり見かけませんね。

あ、でも、 mod_なんとかとかいう、本来 404 でも似た URI を探してきて教えてくれる module, あれで使ってますね。たまに見かけます。

[5] W3C なんかで実装してますね。例: <http://www.w3.org/TR/xhtml11/DTD/xhtml11.html>)。

[13] W3C 以外で使われているところはまったく見たことがないなあ。 使うべきだけど使っていないという事例すら見たことがない。

歴史

[302] RFC 1945 (HTTP/1.0); RFC 2068・2616 (HTTP/1.1) 10.3.1 300 Multiple Choices

{1945} This response code is not directly used by HTTP/1.0 applications, but serves as the default for interpreting the 3xx class of responses.

この応答符号は HTTP/1.0 応用は直接使用しませんが、 3xx 級の応答の解釈の既定値として用意されています。

{2068,2616} The requested resource corresponds to any one of a set of representations, each with its own specific location, and agent-driven negotiation information (section 12) is being provided so that the user (or user agent) can select a preferred representation and redirect its request to that location.

要求された資源は表現の集合のいずれとも対応し、 それぞれがそれぞれの位置を持ち、 エージェント駆動折衝情報が提供されており、 従って利用者 (又は利用者エージェント) は最善の表現を選択して要求をその位置に再指向 (リダイレクト) できます。

The requested resource is available at one or more locations. Unless it was a HEAD request, the response {1945} should {2068,2616} SHOULD include an entity containing a list of resource characteristics and location(s) {2068} from which the user or user agent can choose the one most appropriate. {2068,2616} The entity format is specified by the media type given in the Content-Type header field. Depending upon the format and the capabilities of the user agent, selection of the most appropriate choice {2068 may {2616} MAY be performed automatically. However, this specification does not define any standard for such automatic selection.

要求された資源は1つ以上の位置で利用可能です。 HEAD 要求の場合を除いて、応答は、 利用者又は利用者エージェントが最適なものを選ぶための資源の特徴と位置の一覧を含んだ実体を含んでいるべきです実体の書式は Content-Type 頭欄に与えられた媒体型で規定されます。その書式と利用者エージェントの能力に依り、最適な選択肢の選択を自動的に行っても構いません。しかし、この仕様書はこの自動選択の規格は定義しません。

If the server has a preferred choice {2068,2616} of representation, it {1945} should {2068,2616} SHOULD include the {2068,2616} specific {1945,2068} URL {2616} URI {2068,2616} for that representation in a Location field; user agents {1945} may {2068,2616} MAY use {1945} this {2068,2616} the Location field value for automatic redirection. {2068,2616} This response is cacheable unless indicated otherwise.

サーバーは表現の最適な選択肢を持っているなら、 その表現の特有の URI を Location 欄に含めるべきです。 利用者エージェントは Location 欄の値を自動最指向に使用しても構いませんこの応答は他で指定が無い限りキャッシュ可能です。

HTCPCP

メモ

[2] 機械的選択って、 Alternate とかを使った内容折衝のことでしょうけど、 これこそ見たことがないです。

[4] 透過内容折衝目録応答の典型的な状態符号として 300 が示されています。この場合は対応する利用者エージェントは RFC2295 の規定に従って自動的に (利用者の手動の選択なしに) 適当な資源の表現を取り寄せることとなるかもしれません。

[315] HTTP 300 - Add Alternates Header from RFC 2295 ( ( 版)) <http://burp.renderfarming.net/forum_thread.php?id=436>