HTTP 501 Not Implemented
Overview
The HTTP 501 Not Implemented status code indicates that the server does not support the functionality required to fulfill the request. It suggests that the server lacks the capability to perform the requested operation.
Purpose
The HTTP 501 response is used when the server recognizes the request method but cannot fulfill it. This could be due to the server not supporting the functionality required for the request.
Usage
Client Behavior:
- Send Request: The client sends an HTTP request to the server with an unsupported or not implemented method.
- Receive Response: The client receives an HTTP 501 status code, indicating that the requested functionality is not supported.
Server Behavior:
- Recognize Method: The server recognizes the request method but lacks the capability to perform it.
- Send Response: The server sends a 501 Not Implementedresponse.
Scenarios
- Unsupported Methods: When the client uses an HTTP method not supported by the server.
- Future Functionality: The server may return 501 for methods it intends to support in the future.
Sequence Diagram
Illustrating the process for an HTTP 501 response:
sequenceDiagram
    participant Client
    participant Server as Web Server
    Note over Client: Step 1: Client sends a request with an unsupported method
    Client->>Server: UNSUPPORTED_METHOD /resource HTTP/1.1 (Step 1)
    Note over Server: Step 2: Server recognizes the method as not implemented
    Server->>Client: HTTP/1.1 501 Not Implemented (Step 2)
    Server->>Client: Allow: GET, POSTCurl Request and Response Example
Sending a request using Curl with an unsupported method:
curl -i -X UNSUPPORTED_METHOD http://example.com/resource
# Expected response: HTTP/1.1 501 Not Implemented
# Allow: GET, POSTPHP cURL Request and Response Example
PHP script using cURL to handle a 501 Not Implemented response:
<?php
$ch = curl_init('http://example.com/resource');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'UNSUPPORTED_METHOD');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 501) {
    echo "Not Implemented. Allowed methods: " . curl_getinfo($ch, CURLINFO_HEADER_OUT);
}
curl_close($ch);
?>
Python Request and Response Example
Python script sending a request with an unsupported method and handling a 501 Not Implemented response:
import requests
response = requests.request('UNSUPPORTED_METHOD', 'http://example.com/resource')
if response.status_code == 501:
    print("Not Implemented. Allowed methods:", response.headers['Allow'])Apache Configuration for HTTP 501 Not Implemented
Configuring Apache to handle 501 errors and specify allowed methods:
# Apache Configuration Example
ErrorDocument 501 "Not Implemented"
Header always allow GET
Header always allow POSTNGINX Configuration for HTTP 501 Not Implemented
NGINX configuration for handling 501 errors and specifying allowed methods:
# NGINX Configuration Example
error_page 501 = /501.html;
location = /501.html {
    internal;
    add_header Allow "GET, POST";
}HTTP 500 Internal Server Error HTTP 502 Bad Gateway