HTTP 203 Non-Authoritative Information
Overview
The HTTP 203 Non-Authoritative Information status code indicates that the server successfully processed the request, but the returned metadata may not be from the origin server.
Purpose
The HTTP 203 response is used to convey that the returned payload has been modified by an intermediary, such as a proxy server, and may not exactly represent the original server’s response.
Usage
Client Behavior:
- Send Request: The client sends an HTTP request.
- Receive Response: The client receives the HTTP 203 status code, indicating the response may have been altered.
Server Behavior:
- Process Request: The server or intermediary processes the request.
- Send Response: The server or intermediary sends a 203 Non-Authoritative Informationresponse, possibly altering the original content.
Scenarios
- Proxy Server Responses: Common in environments where proxy servers modify the original response for various reasons, like adding annotations or altering headers.
- Cached Responses: When a cached response is served and modified by an intermediary before reaching the client.
Sequence Diagram
A sequence diagram to illustrate the request and response process for HTTP 203:
sequenceDiagram
    participant Client
    participant Proxy as Proxy Server
    participant Origin as Origin Server
    Client->>Proxy: GET /resource HTTP/1.1
    Proxy->>Origin: GET /resource HTTP/1.1
    Origin->>Proxy: HTTP/1.1 200 OK
    Proxy->>Client: HTTP/1.1 203 Non-Authoritative InformationCurl Request and Response Example
Sending a request with Curl and expecting a potential 203 Non-Authoritative Information response:
curl -i http://example.com/resource
# Possible response: HTTP/1.1 203 Non-Authoritative InformationPHP cURL Request and Response Example
PHP code using cURL to send a request where the response might be modified by an intermediary:
<?php
$ch = curl_init('http://example.com/resource');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 203) {
    echo "Response might have been modified by an intermediary.";
}
curl_close($ch);
?>
Python Request and Response Example
Python script using the requests library for a request that could receive a 203 Non-Authoritative Information response:
import requests
response = requests.get('http://example.com/resource')
if response.status_code == 203:
    print("Response might have been modified by an intermediary")Apache Configuration for HTTP 203 Non-Authoritative Information
Configuring Apache for environments where intermediary modifications might lead to a 203 response:
<VirtualHost *:80>
    ServerName proxy.example.com
    # Configurations for proxy behavior...
</VirtualHost>NGINX Configuration for HTTP 203 Non-Authoritative Information
Setting up NGINX in a proxy environment where responses might be modified:
server {
    listen 80;
    server_name proxy.example.com;
    location / {
        proxy_pass http://backend_server;
        # Additional proxy configurations...
    }
}HTTP 202 Accepted HTTP 204 No Content