Перейдите на следующую страницу. Ответы Yahoo. Там есть скриншот проблемы владельца вопроса. Когда я нажимаю на изображение, чтобы увидеть его, окно с таким количеством символов, которые не имеют никакого смысла. Я использую последнее обновление Firefox. Но эта проблема не существует в Факеле
1 ответ
Заголовки ответа включают в себя:
Content-Type: text/plain; charset=utf-8
Это сообщение от сервера браузеру о том, что отправляемые данные относятся к определенному типу (в данном случае text/plain
с кодировкой UTF-8), и браузер должен интерпретировать данные как таковые. Способ отображения данных в конечном итоге зависит от браузера, но браузер должен предположить, что Content-Type
правильный, а не смотреть на расширение (которое может даже не существовать в URL) или пытаться проанализировать данные. Другими словами, он должен обрабатывать весь text/plain
одинаково.
Firefox делает только то, что ему говорит сервер. Неправильный ответ сервера (в настоящее время мы предполагаем, что это действительно должно быть изображение - это правильно в данном случае, но не во всех случаях, поэтому браузеры не могут надежно определить это).
Если вы действительно хотите, вы можете сохранить изображение и открыть его в программе просмотра изображений. Вы также можете установить дополнение, чтобы заставить любой URL, заканчивающийся на .jpeg
отображаться как изображение - но учтите, что это может нарушить другие вещи.
В конце концов, сервер делает неправильные вещи - и, если говорить о веб-стандартах, FF делает правильные вещи, слушая их.
Обратите внимание, что RFC 2616 говорит:
Любое сообщение HTTP/1.1, содержащее тело объекта, ДОЛЖНО включать поле заголовка Content-Type, определяющее тип носителя этого тела. Если и только если тип мультимедиа не задан полем Content-Type, получатель МОЖЕТ попытаться угадать тип мультимедиа посредством проверки его содержимого и /или расширения имени URI, используемого для идентификации ресурса. Если тип носителя остается неизвестным, получатель ДОЛЖЕН трактовать его как тип «application /octet-stream».
Более поздняя замена RFC 2731 отмечает, что некоторые браузеры все равно догадываются, но это не рекомендуется:
На практике владельцы ресурсов не всегда правильно настраивают свой исходный сервер для предоставления правильного Content-Type для данного представления, в результате чего некоторые клиенты проверяют содержимое полезной нагрузки и переопределяют указанный тип. Клиенты, которые делают это, рискуют сделать неправильные выводы, которые могут подвергнуть дополнительным рискам безопасности (например, "повышение привилегий"). Кроме того, невозможно определить намерение отправителя, изучив формат данных: многие форматы данных соответствуют нескольким типам мультимедиа, которые отличаются только семантикой обработки. Разработчикам рекомендуется предоставлять средства отключения такого "прослушивания контента", когда он используется.
Проблема заключается в том, что любой произвольный поток данных может выглядеть как JPEG по расширению или по содержанию, но если источник не предполагает, что он является изображением, интерпретировать его как таковой было бы неправильно. Когда предоставляется Content-Type
, браузеры должны доверять серверу знать, что он делает, и интерпретировать данные, как указано в заголовке.