Давайте рассмотрим IE. Скажем, у вас есть скрытый iFrame, который вы используете для запроса загрузки файла. Например
<iframe src="getFile?id=123">
Теперь сервер может отправить сообщение об ошибке в кодировке JSON, например
{
error: 'File 123 does not exist',
retryLater: false
}
Если это сообщение об ошибке отправлено как application/json
, появится диалоговое окно загрузки, поскольку текст JSON ошибочно принят за фактический файл.
С другой стороны, MIME-тип text/plain
приведет к тому, что сообщение будет отображаться в iFrame, и вы можете извлечь его и преобразовать в необычное всплывающее окно или что-то с помощью JScript.
(Edit)
Реальный пример: Загрузка файла EXTJS - проблема с панелью безопасности IE8