Comment puis-je * empêcher * Apache2 de définir l’en-tête Content-Type?

J’ai un script CGI qui imprime les éléments suivants sur stdout:

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"; 

Où $ redirect et $ date sont des valeurs raisonnables. Ce que Apache2 envoie réellement inclut également un en-tête Content-Type: (text / plain). J’ai commenté le DefaultType dans le fichier de configuration du serveur.

J’essaie de déboguer un problème en aval qui se produit quand aucun en-tête Content-Type: est envoyé. Alors, quelle incantation magique dois-je effectuer pour empêcher Apache2 d’append l’en-tête de type de contenu?

Selon ma lecture (certes brève) de server / protocol.c et server / core.c, vous ne pouvez pas.

Par défaut, DefaultType est toujours utilisé (text / plain par défaut) si cet en-tête n’est pas présent.

RemoveType arrêtera d’envoyer un type de contenu avec la ressource.

Addenda

  DefaultType None   RemoveType .txt   ForceType None  

Testé sur mon propre serveur, ces trois solutions et aucune ne fonctionnaient. Ils ont tous retourné du texte / plaine.

Si tout ce que vous essayez de faire est de préparer un test spécifique côté serveur, vous pouvez toujours “sortingcher” en pré-imprimant les sorties dans un fichier texte et en faisant en sorte que netcat écoute les connexions sur certains ports.

J’utilise cette astuce quand je veux être sûr à 100% de chaque octet que le serveur envoie.

Même si nous supprimons l’en-tête Content-Type de la requête via la directive “Headet unset Content-Type”, apache régénère l’en-tête Content-Type d’un autre champ de la structure de la requête. Par conséquent, nous forçons d’abord cet autre champ à une valeur réservée, afin d’empêcher la régénération de l’en-tête, nous supprimons alors le Content-Type via la directive “Headet unset”.

Pour apache2.2:

 Header set Content-Type none Header unset Content-Type 

Pour apache2.4:

 Header set Content-Type "" Header unset Content-Type 

Vous pouvez essayer avec la directive:

 ResponseHeader unset Content-Type 

Comme je lis les documents Apache en question , ce que vous voulez peut effectivement être

 Header unset Content-Type 

J’espère que ça le fait!