HTTP 506 Variant Also Negotiates (Experimental)
Overview
The HTTP 506 Variant Also Negotiates
status code is an experimental response indicating that the server has an internal configuration error and is unable to perform transparent content negotiation for the request.
Purpose
The HTTP 506 response is used to inform the client that the server encountered an error while attempting to perform content negotiation.
Usage
Client Behavior:
- Send Request: The client sends an HTTP request with the expectation of content negotiation.
- Receive Response: The client receives an HTTP 506 status code if the server encounters an error during content negotiation.
Server Behavior:
- Content Negotiation Error: The server encounters an internal configuration error while attempting content negotiation.
- Send Response: The server sends a
506 Variant Also Negotiates
response to the client.
Scenarios
- Content Negotiation Failure: The server encounters issues while negotiating content variants.
Sequence Diagram
Illustrating the process for an HTTP 506 response:
sequenceDiagram participant Client participant Server Note over Client: Step 1: Client sends a request expecting content negotiation Client->>Server: GET /resource HTTP/1.1 (Step 1) Note over Server: Step 2: Server encounters internal error during content negotiation Server-->>Client: HTTP/1.1 506 Variant Also Negotiates (Step 2)
Curl Request and Response Example
Sending a request using Curl with an expectation of content negotiation:
curl -i -H "Accept: application/json" http://example.com/resource
# Expected response: HTTP/1.1 506 Variant Also Negotiates
PHP cURL Request and Response Example
PHP script using cURL to handle a 506 Variant Also Negotiates response:
<?php
$ch = curl_init('http://example.com/resource');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Accept: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 506) {
echo "Variant Also Negotiates";
}
curl_close($ch);
?>
Python Request and Response Example
Python script sending a request with an expectation of content negotiation and handling a 506 Variant Also Negotiates response:
import requests
response = requests.get('http://example.com/resource', headers={'Accept': 'application/json'})
if response.status_code == 506:
print("Variant Also Negotiates")
Apache Configuration for HTTP 506 Variant Also Negotiates
Configuring Apache to handle 506 errors:
# Apache Configuration Example
ErrorDocument 506 "Variant Also Negotiates"
NGINX Configuration for HTTP 506 Variant Also Negotiates
NGINX configuration for handling 506 errors:
# NGINX Configuration Example
error_page 506 /506.html;
location = /506.html {
internal;
return 506 "Variant Also Negotiates";
}
HTTP 505 HTTP Version Not Supported HTTP 507 Insufficient Storage (WebDAV)