Códigos de estado comunes y sus significados
428 Condición previa requerida
Las condiciones previas son cuando el cliente envía una solicitud HTTP; se deben cumplir algunas condiciones preestablecidas para que la solicitud sea exitosa.
Un buen ejemplo es el encabezado If-None-Match, que se usa a menudo en solicitudes GET. Si se especifica If-None-Match, el cliente solo volverá a recibir después de que cambie la ETag en la respuesta. . responder.
Otro ejemplo de requisito previo es el encabezado If-Match. Generalmente se usa en solicitudes PUT para indicar que solo se actualizan los recursos que no se han modificado. Se usa para evitar que varios clientes utilicen HTTP. servicio no cubrirán el mismo contenido entre sí.
Cuando el servidor utiliza el código de estado 428 Precondición requerida, significa que el cliente debe enviar los encabezados de solicitud anteriores para realizar la solicitud. Este método proporciona al servidor una forma efectiva de evitar la "actualización perdida". problema.
429 Demasiadas solicitudes
Este código de estado es útil cuando necesita limitar el número de solicitudes de clientes para un determinado servicio, es decir, límite de tasa de solicitudes.
Antes de esto, había algunos códigos de estado similares, como '509 Límite de ancho de banda excedido'. Twitter usa 420 (que no es un código de estado definido por HTTP)
Si lo desea. limitar clientes La cantidad de solicitudes realizadas por el cliente al servicio puede usar el código de estado 429 y también contiene un encabezado de respuesta Retry-After para indicarle al cliente cuánto tiempo llevará solicitar el servicio nuevamente.
431 Campos de encabezado de solicitud demasiado grandes (el campo de encabezado de solicitud es demasiado grande)
En algunos casos, el encabezado de solicitud HTTP enviado por el cliente será muy grande, entonces el servidor puede envíe 431 Campos de encabezado de solicitud demasiado grandes para indicar el problema.
No estoy seguro de por qué no hay ningún código de estado 430, pero salta directamente de 429 a 431. Intenté buscar pero no obtuve resultados. Mi única suposición es que 430 Forbidden es demasiado similar a 403 Forbidden, solo para evitar confusiones, ¡Dios lo sabe!
Se requiere autenticación de red 511
Este código de estado es interesante para mí. Si está desarrollando un servidor HTTP, no necesariamente necesita lidiar con este código de estado. Si estás escribiendo un cliente HTTP, este código de estado es muy importante.
Si utilizas con frecuencia portátiles y smartphones, habrás notado que una gran cantidad de servicios WIFI públicos requieren que aceptes algunos acuerdos o inicies sesión antes de poder utilizarlos.
Esto funciona interceptando el tráfico HTTP y devolviendo una redirección e inicio de sesión cuando el usuario intenta acceder a la red. Es molesto, pero eso es lo que sucede.
El uso de estos clientes de "intercepción" tiene algunos efectos secundarios desagradables. Hay ejemplos de estos dos mencionados en el RFC:
Si visita un sitio web antes de iniciar sesión en WIFI, el dispositivo de red interceptará la primera solicitud. Estos dispositivos a menudo también tienen su propio icono de sitio web, 'favicon'. '. Después de iniciar sesión, encontrará que el ícono del sitio web que visita ha sido el ícono del sitio web de inicio de sesión WIFI durante un período de tiempo.
Si el cliente utiliza una solicitud HTTP para encontrar el documento (quizás JSON), la red responderá con una página de inicio de sesión, por lo que su cliente obtendrá un error de análisis y hará que el cliente se comporte de manera anormal. , este Este problema es muy común.
Por lo tanto, se propuso el código de estado 511 para solucionar este problema.