Удалить заголовок типа содержимого из ответа Lighttpd

#php #lighttpd

#php #lighttpd

Вопрос:

Я написал функцию с именем IO::stdout:

 class IO {
      public static function stdout($var) {
          $stdout = fopen('php://stdout', 'w');
          fwrite($stdout, $var, strlen($var));
          fclose($stdout);
      }
}
IO::stdout("Hello World!");
  

Что ж, это работает! Но когда я запрашиваю страницу, она отображает меня:

 Hello World!
X-Powered-By: PHP/5.6.13
Content-type: text/html; charset=UTF-8
  

Настройка expose_php = Off в php.ini удалила заголовок X-Powered-By, но заголовок типа содержимого по-прежнему печатается. Вероятно, он добавлен Lighttpd. Как мне отключить заголовок типа содержимого?

Комментарии:

1. lighttpd добавляет «Content-Type», а не «Content-type» к заголовкам (перед основным содержимым — и поэтому все, что добавляет «Content-type: text / html; charset = UTF-8», не является lighttpd. Похоже, что ваш PHP-код конфликтует с обработкой запроса PHP по умолчанию, поскольку заголовки, появляющиеся после вашего «Hello World!» выглядят как заголовки, которые отправил бы PHP.

Ответ №1:

Это заголовок PHP по умолчанию: http://php.net/manual/fr/ini.core.php#ini.default-mimetype

Вы не можете удалить его с помощью header_remove , так как отсутствующий Content-Type заголовок вызовет mime-тип по умолчанию.

Вместо этого попробуйте установить для него пустую строку:

header('Content-Type:', true);

true удалит любой предыдущий аналогичный заголовок.

И просто для справки, имена заголовков не чувствительны к регистру, а PHP, как известно, отправляет заголовок Content-type с небольшим t .

Также вы можете отправить правильный Content-Type (который должен быть text/plain , я думаю).