HTTPQUERY
Español

501 Not Implemented

Uso

El código de estado 501 Not Implemented significa que el servidor no puede atender la solicitud debido a una carencia del lado del servidor. Es similar al código de estado 405 Method Not Allowed, aunque un 405 significa concretamente que el método solicitado se reconoce, pero no está permitido para el recurso de destino.

Un código de estado 405 Method Not Allowed significa que el servidor reconoce el método, pero no lo permite para el recurso de destino. Un código de estado 501 Not Implemented significa que el servidor no reconoce el método o carece de la capacidad de admitirlo para cualquier recurso. Se trata de una condición permanente a nivel de servidor.

Este estado es apropiado cuando el servidor no reconoce el método de la solicitud y, por tanto, no puede atender la solicitud para ningún recurso.

Impacto en SEO

Los motores de búsqueda como Google no indexan una URL que devuelve un estado 501 Not Implemented. Las URL indexadas previamente que devuelven este código de estado se eliminan de los resultados de búsqueda.

Algunas API amplían el significado de 501 más allá de los métodos ausentes. La API de Shopify devuelve 501 Not Implemented cuando el endpoint solicitado no está disponible en el plan actual de la tienda, por ejemplo una función restringida a Shopify Plus. El endpoint existe en la superficie de la API, pero está limitado por el nivel de suscripción.

Ejemplo

El cliente solicita un recurso y el servidor responde con un código de estado 501 Not Implemented porque el método de la solicitud se reconoce, pero aún no está admitido.

Solicitud

POST /requests?id=111&flag=start HTTP/1.1
Host: example.com

Respuesta

HTTP/1.1 501 Not Implemented
Content-Type: text/html; charset=UTF-8
Content-Length: 148

<html>
  <head>
    <title>Function Not Implemented</title>
  </head>
  <body>
    <p>This functionality is under development.</p>
  </body>
</html>

Cómo solucionarlo

Confirme que el método HTTP de la solicitud es correcto. Un PATCH enviado a un servidor que solo espera GET y POST provoca un 501 si el servidor no tiene ningún manejador para ese método.

Causas raíz habituales y sus soluciones:

Método no admitido en el servidor. En Apache, las directivas Limit y LimitExcept controlan los métodos permitidos. En nginx, el filtrado de métodos se realiza en el bloque location. Asegúrese de que el método que envía el cliente no esté excluido por la configuración.

Módulos del servidor ausentes. Apache requiere mod_dav para métodos WebDAV como PROPFIND y MKCOL. IIS requiere WebDAV Publishing y las asignaciones de manejadores correctas. Habilite el módulo y reinicie el servicio.

Proxy inverso que elimina o reescribe métodos. Algunos proxies convierten los métodos no estándar en GET. En nginx, verifique que proxy_method no esté configurado salvo que sea intencionado. En AWS ALB, confirme que el grupo de destino admite los métodos HTTP necesarios.

Software de servidor desactualizado. Las compilaciones antiguas de servidores web carecen de soporte para métodos estandarizados después de su publicación. Actualice Apache, nginx o IIS a una versión estable actual.

Bloqueo por cortafuegos o WAF. Los cortafuegos de aplicaciones web y los complementos de seguridad a veces rechazan métodos como PUT, DELETE u OPTIONS. Revise las reglas del WAF y añada a la lista de permitidos los métodos necesarios para el endpoint.

Función de la API restringida por el nivel del plan. Plataformas como Shopify devuelven 501 cuando un endpoint existe pero no está disponible para el nivel de suscripción de la tienda. Verifique los requisitos de plan de esa función en la documentación de la API y actualice el plan si es necesario.

En el lado del cliente, confirme que la URL de la solicitud es correcta. Un error tipográfico que dirija el tráfico al servidor o endpoint equivocado devuelve 501 cuando el servidor receptor no tiene implementación para el método.

Referencias de código

.NET

HttpStatusCode.NotImplemented

Rust

http::StatusCode::NOT_IMPLEMENTED

Rails

:not_implemented

Go

http.StatusNotImplemented

Symfony

Response::HTTP_NOT_IMPLEMENTED

Python3.5+

http.HTTPStatus.NOT_IMPLEMENTED

Java

java.net.HttpURLConnection.HTTP_NOT_IMPLEMENTED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_NOT_IMPLEMENTED

Angular

@angular/common/http/HttpStatusCode.NotImplemented