Skip to content

Latest commit

 

History

History
80 lines (61 loc) · 3.95 KB

File metadata and controls

80 lines (61 loc) · 3.95 KB
title slug l10n
506 Variant Also Negotiates
Web/HTTP/Status/506
sourceCommit
dae4a066bdf3900056bb4e8e6af85f50e4d1fd71

{{HTTPSidebar}}

HTTP の 506 Variant Also Negotiatesサーバーエラーレスポンスのステータスコードで、コンテンツの選択プロセスに再帰ループがある場合、コンテンツネゴシエーション中に返されます。

エージェント主導のコンテンツネゴシエーションにより、サーバーが複数の版を保有している場合に、クライアントとサーバーが協調して指定されたリソースの最適な版を決定することができます。サーバーがレスポンスを作成する際にサーバーの誤設定により、自分自身への循環参照が発生した場合、サーバーは 506 ステータスコードを送信します。

クライアントがレスポンスから自動的に選べる方法の標準化が欠如しており、クライアントとサーバーの操作が遅くなる追加の往復があるため、このメカニズムはほとんど使用されていないということ意味しています。 サーバー駆動型コンテンツネゴシエーションの方がはるかに一般的であり、サーバーはリクエストヘッダー({{HTTPHeader("Accept-Language")}}、{{HTTPHeader("Accept")}} など)に基づいて、クライアントに最も適したリソースを直接選べます。

ステータス

506 Variant Also Negotiates

別な版のあるリソース

次の例では、クライアントが {{HTTPHeader("Accept-Language")}} ヘッダーを使用して fr ロケールのページをリクエストしています。 これは、curl を使用して実行することができます。

curl  -H "Negotiate: trans" -H "Accept-Language: fr;" http://example.com/index

This produces the following request:

GET /index HTTP/1.1
Host: example.com
User-Agent: curl/8.7.1
Accept: */*
Negotiate: trans
Accept-Language: fr

サーバーの誤設定により、 fr に対する様々なレスポンスが、それ自体が「透過的ネゴシエーション」を発生させるタイプマップを指しています。 サーバーは、送信される前の選択レスポンスに TCN ヘッダーが存在することで、この状態を検出できるかもしれません。

HTTP/1.1 506 Variant Also Negotiates
Date: Mon, 22 Jul 2024 10:00:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Type: text/html; charset=UTF-8
Content-Length: 233
TCN: list
Vary: negotiate,accept-language
Alternates: {"index.html.en" 1 {type text/html} {language en} {length 48}}, {"another-map.html.fr.map" 1 {type text/html} {language fr} {length 45}}}}

<html>
<head>
  <title>506 Variant Also Negotiates</title>
</head>
<body>
  <h1>Variant Also Negotiates</h1>
  <p>A variant for the requested resource is itself a negotiable resource. This indicates a configuration error.</p>
</body>
</html>

仕様書

{{Specifications}}

関連情報