2009-06-17 20 views
6

No tenemos muchas formas de escribir una cabecera HTTP-estado:Sintaxis de las cabeceras HTTP de estado

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

sino que es la forma semánticamente correcta y especificaciones de ayuda?

Editar: Por encabezados de estado me refiero a this, usando una función como PHP header().

Respuesta

1

Lo más parecido que he encontrado para una respuesta es el Fast CGI spec, que estados para establecer códigos de estado a través de los encabezados de estado y ubicación.

4

Añadiendo algo de información más tarde, ya que me encontré con esta pregunta mientras investigaba algo relacionado.

creo que el campo de encabezado de estado fue inventado 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 un script CGI para devolver una código de estado al servidor web que anula el valor predeterminado visto en la línea de estado HTTP. Por lo general, el servidor almacena el resultado de la secuencia de comandos 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 el campo de encabezado "Estado:" de las secuencias de comandos (más algunas otras transformaciones ordenadas por el RFC).

De modo que 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 quizás una aplicación FastCGI).

Una secuencia de comandos CGI también puede funcionar en el modo "encabezado no analizado" (NPH), cuando genera un encabezado HTTP completo y válido que el servidor web pasa al cliente palabra por palabra. Como tal, esto no debería incluir un campo de encabezado Status:

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

Cuestiones relacionadas