506 Variant Also Negotiates

Mã trạng thái HTTP 506 Variant Also Negotiates phản hồi lỗi phía máy chủ được trả về trong quá trình thương lượng nội dung khi có vòng lặp đệ quy trong quá trình chọn tài nguyên.

Thương lượng nội dung do agent điều khiển cho phép client và máy chủ cộng tác quyết định biến thể tốt nhất của tài nguyên khi máy chủ có nhiều biến thể. Máy chủ gửi mã trạng thái 506 do cấu hình máy chủ sai tạo ra các tham chiếu vòng tròn khi tạo phản hồi.

Sự thiếu chuẩn hóa về cách client tự động chọn từ các phản hồi, và các vòng kết nối bổ sung làm chậm tương tác client-server đồng nghĩa cơ chế này hiếm khi được sử dụng. Thương lượng nội dung do máy chủ điều khiển phổ biến hơn nhiều, nơi máy chủ trực tiếp chọn tài nguyên phù hợp nhất cho client dựa trên tiêu đề yêu cầu (Accept-Language, Accept, v.v.).

Trạng thái

http
506 Variant Also Negotiates

Ví dụ

Tài nguyên với các biến thể

Trong ví dụ sau, client yêu cầu trang trong locale fr bằng tiêu đề Accept-Language. Điều này có thể được thực hiện bằng curl:

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

Điều này tạo ra yêu cầu sau:

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

Do cấu hình máy chủ sai, phản hồi biến thể cho fr trỏ đến type map tự nó gây ra thương lượng trong suốt được thực hiện. Máy chủ có thể phát hiện điều kiện này qua sự hiện diện của tiêu đề TCN trong phản hồi lựa chọn trước khi nó được gửi:

http
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>

Đặc tả kỹ thuật

Thông số kỹ thuật
RFC 2295
# section-8.1

Xem thêm