コンテンツネゴシエーションとは
コンテンツネゴシエーションは、リモートクライアントがWebサーバーのより具体的な要求を行うことを可能にする、hyptertext transfer protocol(HTTP)仕様で説明されている手法です。 この方法により、サーバーは複数の種類のファイル、さまざまな言語のドキュメントなどを、それぞれ異なる品質レベルでホストできます。 これらの個別の選択は単一の参照としてホストされ、その統一リソース識別子(URI)で示され、サーバー上で利用可能な場合により適切なコンテンツを提供することを目的としています。
ユニフォームリソースロケーター(URL)がサーバー上のフォルダー内など、特定の場所にあるファイルへの参照である場合、URIは事実上どこでも何でも参照できます。 配信されるファイルの場所、ファイルの名前、そのタイプなどのURIの詳細は、コンテンツのネゴシエート後に解決されます。 これにより、サーバー上のその言語のフォルダーの下に編成された特定の言語のすべてのファイルなど、さまざまなコンテンツを異なる場所に配置できます。
コンテンツネゴシエーションの背後にある考え方は、Webサーバーが特定のユーザーエージェントまたはWebブラウザーに可能な限り最高のコンテンツを配信することです。 特定の画像ファイルタイプまたはその他のコンテンツを、それらをサポートできるクライアントに配信できます。 これは、モバイルデバイスなどの複数のブラウジングプラットフォームをサポートするために、ファイルの複数のバージョンをホストする場合に役立ちます。
これをすべて行うために、HTTPはコンテンツネゴシエーションの2つの方法を記述し、2つを結合する機能を提案します。 1つの方法は、サーバー駆動型のネゴシエーションです。 この方法を使用すると、サーバーは、提供されたロジックや利用可能なコンテンツに基づいて、配信するものについて可能な限り最良の決定を行います。 。
ただし、サーバー駆動型のコンテンツネゴシエーションにはいくつかの困難があります。 サーバーは、考えられるすべての要求に応答する方法を認識していないため、それらの決定を行うために与えられたロジックに基づいて推測する必要があります。 Webブラウザーがモバイルデバイスで実行されているかどうか、または要求されたドキュメントが通知されない限りプリンターに直接送信されることを意図しているかどうかを知ることはできません。 サーバー駆動型のメソッドは、リクエストがリクエストを行っているユーザーに関する情報を送信することを要求するという点で、プライバシーの問題もあります。
2番目の方法は、エージェント駆動型コンテンツネゴシエーションとして知られています。 ここで、ユーザーはサーバーに要求を行い、サーバーは使用可能な代替手段のリストを送り返します(存在する場合)。 選択は、使用可能なブラウザーまたはプラットフォームの設定に基づいて自動的に行われるか、HTMLで表示されるオプションの形式で手動で行われます。 エージェント駆動型オプションの主な欠点は、可能な限り最高のコンテンツを求めるサーバーへの複数のリクエストです。 ただし、プロキシサーバーが、エージェント駆動型ネゴシエーションを使用しているサーバーへの要求をキャッシュしている場合、キャッシュへの単一の要求を通じて、プロキシの背後にあるユーザーに適切なコンテンツを配信できます。