Pregunta

Hay muchas formas de escribir un encabezado de estado HTTP:

HTTP/1.1 404 Not Found
Status: 404
Status: 404 Not Found

pero, ¿cuál es la forma semánticamente correcta y compatible con las especificaciones?

Editar: por encabezados de estado quiero decir esto , usando una función como el header () de PHP.

¿Fue útil?

Solución 3

Lo más parecido que he encontrado a una respuesta es Especificación rápida de CGI , que establece establecer códigos de estado a través de encabezados de Estado y Ubicación.

Otros consejos

Agregando alguna información algún tiempo después, ya que me encontré con esta pregunta mientras investigaba algo relacionado.

Creo que el campo de encabezado de estado se inventó originalmente como parte de la especificación CGI, RFC 3875:

https://tools.ietf.org/html/rfc3875#section- 6.3.3

Para citar:

The Status header field contains a 3-digit integer result code that
indicates the level of success of the script's attempt to handle the
request.

   Status         = "Status:" status-code SP reason-phrase NL
   status-code    = "200" | "302" | "400" | "501" | extension-code
   extension-code = 3digit
   reason-phrase  = *TEXT

Permite que un script CGI devuelva un código de estado al servidor web que anula el valor predeterminado que se ve en la línea de estado HTTP. Por lo general, el servidor almacena el resultado del script y emite un nuevo encabezado para el cliente. Este es un encabezado HTTP válido que comienza con una línea de estado HTTP modificada y omite las secuencias de comandos "Estado:" campo de encabezado (más algunas otras transformaciones ordenadas por el RFC).

Por lo tanto, todos sus ejemplos son válidos desde un script CGI , pero solo el primero es realmente válido en un encabezado HTTP. Los dos últimos solo son válidos provenientes de un script CGI (o tal vez una aplicación FastCGI).

Un script CGI también puede funcionar en " encabezado no analizado " (NPH), cuando genera un encabezado HTTP completo y válido que el servidor web pasa al cliente al pie de la letra. Como tal, esto no debería incluir un Estado: campo de encabezado.

Tenga en cuenta que lo que me interesa es qué estado debería ganar si un script de NPH se equivoca un poco y emite el campo Estado: encabezado, posiblemente además de la línea de estado HTTP. No puedo encontrar ninguna indicación clara, así que sospecho que se deja a la implementación de lo que sea que esté analizando la salida, ya sea el cliente o el servidor.

Desde http://tools.ietf.org/html/rfc2616#section-6 y más específicamente http://tools.ietf.org/html/rfc2616# la sección 6.1 no menciona el uso de " Estado: " al indicar un código de estado, y desde la lista oficial de encabezados en http: / /www.iana.org/assignments/message-headers/message-headers.xml no menciona "Estado", me inclinaría a creer que no se debe servir como encabezado.

Muchos de ellos son cadenas bastante arbitrarias, pero aquí están las especificaciones del w3c para los más utilizados

http://www.w3.org/Protocols/rfc2616/rfc2616 -sec14.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top