506

Variant Also Negotiates

公式
エンドポイント自身がネゴシエーションする

506ステータスコードに関する一般的な説明

HTTPステータスコード506 Variant Also Negotiatesは、サーバがいわゆる透過的なコンテントネゴシエーションを使用する構成で配置されているときに発生する、サーバ内の特定の問題の指標です。

要するに、506 Variant Also Negotiates というステータスコードは、ネゴシエーションの無限ループにつながるサーバーの設定ミスを意味します。サーバはクライアントの好みに基づいて要求されたリソースの特定のバージョンを選択するのではなく、 その選択自体が別のネゴシエーションを参照します。

単純な例ですが、クライアントが特定の言語のウェブページを要求しています。サーバーはウェブサイトの異なる言語バージョンを持っており、最も適したバージョンを選択しようとします。しかし、サーバーのコンフィギュレーションが正しくない場合、最適なバージョンを選択するはずのプロセスは、決定的な選択をする代わりに、別の交渉のラウンドを参照する可能性があります。

実際には、このステータスコードは非常に特殊なサーバ構成とエラー状態を想定しているため、ほとんど見られません。この問題を解決するには、無限ループに入ることなくコンテンツネゴシエーションを正しく実行できるように、サーバーの設定を見直し、修正する必要があります。

HTTPステータスコード506の仕様

506 Variant Also Negotiates のステータスコードは、サーバーに内部設定エラーがあることを示します。選ばれた variant リソースは、透過的なコンテンツネゴシエーションをするように設定されており、ネゴシエーションプロセスの適切なエンドポイントではないためです。

出典・引用元はこちら 506 Variant Also Negotiates HTTP Status Code は、8.1 のセクションで規定されています。

PHPで506ステータスコードを投げるには?

WebページでHTTPステータスコード506を投げるには、PHPの関数http_response_codeを使用することができます。構文は次のとおりです: http_response_code(506) (PHP 5 >= 5.4.0, PHP 7, PHP 8)

506 HTTPステータスコードのテスト

クライアント側でHTTPステータスコード(ここでは506 Variant Also Negotiates)などを表示できるようにするためには、F12で開発コンソールを開く必要があります。次に、「ネットワーク」タブに移動します。これでページを開くことができ、ネットワークタブにウェブサイト(例のindex.php)が表示されるはずです。これを選択し、次にHerderセクションを選択する必要があります。すると、ユーザーは次のような結果を見ることができます:

ステータスコード 506 Variant Also Negotiates
概要
URL: https://http-statuscode.com/errorCodeExample.php?code=506
ステータス: 506 Variant Also Negotiates
それらの: Network
IPアドレス: XX.XX.XX.XX
ステータスコード 506 Variant Also Negotiates

ステータスコード506のエラーページを自作する方法

506 Variant Also Negotiatesエラーページの作成は、「Apache」「NGINX」どちらのウェブサーバーでも比較的簡単に行うことができます。

Apache Webserver

Webサーバー「Apache」は、インターネット上で最も一般的なWebサーバーの1つです。Apache」で独自の506 Variant Also Negotiatesエラーページを作成するためには、以下のファイルを変更する必要があります。

File: .htaccess
ErrorDocument 506 /errors/506.html

NGINX Webserver

Webサーバー「Apache」と同様に、「NGINX」もインターネット上で広く利用されています。NGINX」で独自の506 Variant Also Negotiatesエラーページを作成するためには、以下のファイルを変更する必要があります。

File: sites-enabled/default
error_page 506 /506.html;
location = /506.html {
    root /usr/share/nginx/html;
    internal;
}

506ステータスコードのブラウザ互換性

Chrome no data
Edge no data
Firefox no data
Opera no data
Safari no data
Chrome Android no data
Firefox for Android no data
Opera Android no data
Safari on iOS no data
Internet no data
WebView Android no data

プログラミング言語における定数

http.StatusVariantAlsoNegotiates
Response::HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL
:variant_also_negotiates

HTTPステータスコード506に関するミームを楽しませる

著者: Tony Brüser
著者: Tony Brüser

トニー・ブリュザーは、HTTPステータスコードにこだわりのある熱心なウェブ開発者だ。

LinkedInGitHub