Search code examples
phplighttpd

Remove Content-Type header from Lighttpd response


I have written a function called 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!");

Well, it works! But when I request the page, it displays me:

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

Setting expose_php = Off in php.ini removed the X-Powered-By header, but the Content-Type header is still printed. It is probably added by Lighttpd. How do I disable the Content-Type header?


Solution

  • This is the default PHP header: http://php.net/manual/fr/ini.core.php#ini.default-mimetype

    You can't remove it using header_remove, as a missing Content-Type header will trigger the default mime-type.

    Instead, try to set it to an empty string:

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

    true will erase any previous similar header.

    And just for the record, headers' names are case insensitive, and PHP is known to send the Content-type with a small t.

    Also you can send the right Content-Type (which should be text/plain I think).