Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Обслуживание нескольких документов по одному URI
Serving multiple documents at the same URI
Контентное согласование относится к механизмам, определенным в рамках HTTP, которые позволяют предоставлять различные версии документа (или, в более общем смысле, представления ресурса) по одному и тому же URI, чтобы пользовательские агенты могли указать, какая версия наилучшим образом соответствует их возможностям. Классическим примером использования этого механизма является предоставление изображения в формате GIF или PNG, так что браузер, не способный отображать изображения PNG (например, MS Internet Explorer 4), получит версию в формате GIF. Ресурс может быть доступен в нескольких различных представлениях, например, на разных языках или в разных типах медиа. Один из способов выбора наиболее подходящего представления – предоставить пользователю индексную страницу и позволить ему сделать выбор самостоятельно; однако часто можно автоматизировать этот выбор на основе определенных критериев.
Content negotiation refers to mechanisms defined as a part of HTTP that make it possible to serve different versions of a document (or more generally, representations of a resource) at the same URI, so that user agents can specify which version fits their capabilities the best. One classical use of this mechanism is to serve an image in GIF or PNG format, so that a browser that cannot display PNG images (e. g. MS Internet Explorer 4) will be served the GIF version. A resource may be available in several different representations; for example, it might be available in different languages or different media types. One way of selecting the most appropriate choice is to give the user an index page and let them select the most appropriate choice; however it is often possible to automate the choice based on some selection criteria.
Механизмы
HTTP предусматривает несколько различных механизмов согласования контента, включая: управляемые сервером (или проактивные), управляемые клиентом (или реактивные), прозрачные и/или гибридные комбинации этих механизмов.
HTTP provides for several different content negotiation mechanisms including: server driven (or proactive), agent driven (or reactive), transparent, and/or hybrid combinations thereof.
Управляемая агентом
Алгоритмы в пользовательском агенте выполняют согласование контента, основанное на действиях агента или в реактивном режиме, выбирая из возможных вариантов представления. Обычно это делается на основе списка представлений и метаданных, предоставленных сервером. Если обобщить принцип работы, то когда пользовательский агент отправляет запрос на сервер, сервер сообщает агенту о доступных представлениях и любых метаданных, связанных с каждым из них (например, тип контента, качество, язык и т. д.). Затем пользовательский агент повторно отправляет запрос по конкретному URL для выбранного представления. Выбор может быть сделан автоматически пользовательским агентом, либо агент может предоставить пользователю варианты на выбор, чтобы он мог выбрать представление напрямую. Более точно, сервер отвечает кодом 300 Multiple Choices или 406 Not Acceptable (в случае, когда управление осуществляется сервером, предоставляются критерии приемлемости для пользовательского агента, но сервер не может выполнить выбор автоматически). К сожалению, HTTP не определяет формат списка представлений и метаданных, а также механизмы выбора.
Agent driven or reactive content negotiation is performed by algorithms in the user agent which choose among the possible variant representations. This is commonly performed based on a server provided list of representations and metadata about them. To summarize how this works, when a user agent submits a request to a server, the server informs the user agent which representations it has available as well as any metadata it has about each representation (e. g., content type, quality, language, etc.). The user agent then resubmits the request to a specific URL for the chosen representation. This can be automatically chosen by the user agent or the user agent can present the user with the choices and the user can directly choose such. More precisely, the server responds with either 300 Multiple Choices or 406 Not Acceptable (when server driven, user agent acceptance criteria are provided but the server cannot automatically make a selection). Unfortunately HTTP leaves the format of the list of representations and metadata along with selection mechanisms unspecified.