2010-03-11 16 views
5

Tengo un script CGI que imprime el siguiente en la salida estándar:¿Cómo puedo * evitar * que Apache2 configure el encabezado Content-Type?

print "Status: 302 Redirect\n"; 
print "Server: Apache-Coyote/1.1\n"; 
print "Location: $redirect\n"; 
print "Content-Length: 0\n"; 
print "Date: $date\n\n"; 

Donde $ redirección y la fecha $ son valores razonables. Lo que Apache2 realmente envía también incluye un encabezado Content-Type: (text/plain). Comenté el DefaultType en el archivo de configuración del servidor.

Estoy intentando depurar un problema indirecto que surge cuando no se envía el encabezado Content-Type :. Entonces, ¿qué hechizo mágico tengo que realizar para evitar que Apache2 agregue el encabezado de tipo de contenido?

Respuesta

3

Según mi (ciertamente breve) lectura de server/protocol.c y server/core.c, no puede.

Siempre se establece de manera predeterminada en DefaultType (text/plain de forma predeterminada) si ese encabezado no está presente.

+0

Ah. Queja. Creo que tendré que configurar otro servidor web para depurar mi cliente. (Estoy tratando de corregir un informe de error que dice que mi código se cae si el servidor no envía ningún tipo de contenido). – Norm

+2

¿Se ejecutará el CGI en la línea de comandos? Simplemente ejecute el script anterior de inetd quizás? – ceri

+0

Netcat es tu amigo. Haz que escuche en un puerto y aleja el contenido que deseas de un archivo.No es necesario ejecutarlo en inetd. –

0

Usted puede tratar con la directiva:

ResponseHeader unset Content-Type 
+0

No, aunque puedo usar cabecera añadir a añadir nueva cabecera (por lo que sé se está realizando el procesamiento de cabecera), el tipo de contenido sin unir del encabezado no tiene ningún efecto. – Norm

0

Al leer the Apache docs in question, lo que quiere en realidad puede ser

Header unset Content-Type 

Esperanza esta lo hace!

+1

No, eso no funcionó. Creo que ResponseHeader se convirtió en Encabezado en Apache2. – Norm

1

RemoveType dejará de enviar un tipo de contenido con el recurso.

Adición

<Files defaulttypenone.txt> 
DefaultType None 
</Files> 
<Files removetype.txt> 
RemoveType .txt 
</Files> 
<Files forcetype.txt> 
ForceType None 
</Files> 

probado en mi propio servidor, estas tres soluciones y ninguno funcionó. Todos devolvieron texto/normal.

+0

DefaultType Ninguno RemoveType .txt ForceType Ninguno Probado en mi propio servidor, este tres soluciones y ninguno trabajó. Todos devolvieron texto/normal. – karlcow

1

Si todo lo que intenta hacer es preparar un caso de prueba muy específico del lado del servidor, siempre puede "engañar" mediante la salida de precocción en un archivo de texto y tener netcat escuchando conexiones en algún puerto.

Utilizo ese truco cuando quiero estar 100% seguro de cada byte que envía el servidor.

0

Incluso si eliminamos el encabezado Content-Type de la solicitud mediante la directiva "Header unset Content-Type", apache regenera el encabezado Content-Type de otro campo de la estructura de solicitud. Por lo tanto, primero forzamos ese otro campo a un valor reservado, a fin de evitar la regeneración del encabezado, luego eliminamos el Tipo de contenido a través de la directiva "Header unset".

Para apache2.2:

Header set Content-Type none 
Header unset Content-Type 

Para apache2.4:

Header set Content-Type "" 
Header unset Content-Type 
Cuestiones relacionadas