Во время тестирования некоторого кода HTTP-сервера я заметил кое-что странное: если я верну Content-Type: text/plain
, браузеры не отобразят содержимое в виде простого текста. Вместо этого они, похоже, предполагают, что сервер должен быть неправильно настроен, и вместо этого пытаются обнаружить тип контента.
Например, если я возвращаю содержимое файла PNG, но с Content-Type: text/plain
:
- FireFox и IE9 оба смотрят на расширение в URL. Если он заканчивается на
.png
, они отображают его как изображение. Если нет (например, если я возвращаю то же содержимое с URL-адреса, оканчивающегося на .xyz
), мне предлагается сохранить файл.
- Chrome и Opera оба просматривают содержимое файла, обнаруживают, что это PNG, и отображают его как изображение.
Конечно, не имеет смысла возвращать PNG как text/plain
в производстве; но если я проверяю, вернул ли мой сервер правильное значение Content-Type
, второстепенное поведение браузеров мешает. Кроме того, это просто глупость, и мне интересно, есть ли способ обойти это.
Есть ли способ - с другим Content-Type
, или дополнительным заголовком HTTP, или чем-то еще - что я могу сказать браузеру: «Показать это в виде текста, нет, на самом деле, я действительно знаю, что делаю «