Spec-Zone.ru › HTTP

Статус: 506

506 Вариант также согласовывается

Код состояния HTTP 506 Variant Also Negotiates ответа об ошибке сервера возвращается во время согласования содержимого, если в процессе выбора ресурса возникает рекурсивный цикл.

Согласование содержимого по инициативе агента позволяет клиенту и серверу совместно выбрать наилучший вариант заданного ресурса, если у сервера есть несколько вариантов. Сервер отправляет код состояния 506 из-за неправильной конфигурации сервера, приводящей к циклическим ссылкам при создании ответов.

Отсутствие стандартизации автоматического выбора клиентами одного из ответов, а также дополнительные циклы обмена данными, замедляющие взаимодействие клиента и сервера, означают, что этот механизм используется редко. Гораздо чаще применяется согласование содержимого по инициативе сервера, при котором сервер напрямую выбирает наиболее подходящий для клиента ресурс на основе заголовков запроса (Accept-Language, Accept и т. д.).

Статус

506 Variant Also Negotiates

Примеры

>

Ресурс с вариантами

В следующем примере клиент запрашивает страницу на языке fr, используя заголовок Accept-Language. Это можно сделать с помощью curl:

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

В результате формируется следующий запрос:

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>

Спецификации

Спецификация
RFC 2295>
# section-8.1>

См. также

  • 300 Multiple Choices
  • RFC 2295
  • Согласование содержимого
  • Коды состояния ответов HTTP
  • Согласование содержимого в документации Apache HTTP Server
  • Исходный код Apache httpd mod_negotiation.c, демонстрирующий условия, при которых формируется ответ HTTP_VARIANT_ALSO_VARIES.

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/506

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API