RewriteRule [E = CONTENT_TYPE: foo / bar] не влияет на Apache / mod_php

Я пытался предотвратить синтаксический анализ запросов POST PHP. Это происходит автоматически, когда он видит соответствующий тип MIME. Для этого я рассматривал следующий прием RewriteRule:

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

Но среда CGI все еще содержит исходный [CONTENT_TYPE] => multipart / form ..

  • Я мог бы установить, например, ALT_CONTENT_TYPE без проблем, но для меня это бесполезно, потому что тогда PHP все еще работает с оригиналом.
  • Аналогичным образом изменение регистра [E = ContEnt_Type] не удалит старое значение заголовка, это просто изменит регистр.
  • Создается ли переменная окружения CONTENT_TYPE на более позднем этапе? Потому что у меня также были проблемы с доступом к нему как к% {CONTENT_TYPE}. Но при повторном взгляде, документы http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond все равно не упоминали об этом.

Есть ли другой способ переопределить эту переменную CGI?

локальный тестовый сервер:

 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
2
задан 23 May 2017 в 15:41
1 ответ

Этот ответ предлагает решение для Apache:

<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> 
3
ответ дан 3 December 2019 в 11:05

Теги

Похожие вопросы