fragen stichworte

RewriteRule [E = CONTENT_TYPE: foo / bar] hat keine Auswirkungen auf Apache / mod_php

Ich versuchte , zu verhindern, dass PHP POST-Anforderungen analysiert. Dies geschieht automatisch, wenn der entsprechende MIME-Typ angezeigt wird. Dafür habe ich überlegt, folgenden RewriteRule-Hack zu verwenden:

RewriteCond %{HTTP:Content-Type} ^(multipart/form-data\s*;.*)$   
RewriteRule mime.php - [E=CONTENT_TYPE:no/parsing;old=%1]

Die CGI-Umgebung enthält jedoch immer noch das Original [CONTENT_TYPE] => multipart/form..

  • Ich könnte z. ALT_CONTENT_TYPE störungsfrei, aber das macht mir nichts, weil PHP dann immer noch auf das Original einwirkt.
  • Wenn Sie den Fall [E=ContEnt_Type] ändern, wird der alte Header-Wert nicht gelöscht, sondern nur der Fall.
  • Wurde der CONTENT_TYPE env var zu einem späteren Zeitpunkt erstellt? Weil ich auch Schwierigkeiten hatte, als% {CONTENT_TYPE} darauf zuzugreifen. Auf den zweiten Blick haben die Dokumente http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond es ohnehin nicht erwähnt.

Gibt es eine andere Möglichkeit, diese CGI-Variable zu überschreiben?

lokaler Testserver:

Server version: Apache/2.2.14 (Ubuntu)
 mod_php, not fastcgi
 Linux snig 2.6.32-29-generic #58-Ubuntu SMP, 2011 x86_64 GNU/Linux

antworten

Diese Antwort schlägt eine Apache-Lösung vor:

<Location "/backend/XXX.php">
    SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate$2 OLD_CONTENT_TYPE=$1$2
    RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE
</Location>