Существует ли тип MIME, который сообщает браузерам «не пытайтесь определить тип, просто отображайте его как текст»? - PullRequest
5 голосов
/ 26 октября 2011

Во время тестирования некоторого кода 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, или чем-то еще - что я могу сказать браузеру: «Показать это в виде текста, нет, на самом деле, я действительно знаю, что делаю «

Ответы [ 2 ]

1 голос
/ 26 октября 2011

См. https://tools.ietf.org/html/draft-ietf-websec-mime-sniff-03#section-4 для контекста.

В некоторых UA добавление в качестве пользовательского параметра, например

текст / равнина; imeanit = да

может помочь.

Некоторые версии IE поддерживают

X-Content-Type-Options: nosniff

см. http://msdn.microsoft.com/en-us/library/gg622941%28v=vs.85%29.aspx

0 голосов
/ 26 октября 2011

Какие данные вы на самом деле возвращаете?Вы уверены, что он использует URL-адрес или сервер игнорирует ваш запрос на изменение типа контента?Вы изучили заголовки, которые видит браузер?Если вы действительно отправляете png как «текст», то я думаю, что браузеры поступают правильно, обнаруживая фактический тип данных, поскольку вы, вероятно, вызываете исключения в их процедурах рендеринга текста.

...