Какие проблемы могут возникнуть при использовании приложения MIME type / json? - PullRequest
3 голосов
/ 25 января 2011

Я работаю над веб-службой, которая должна возвращать данные JSON. Я прочитал, что должен использовать application / json , но не уверен, какие проблемы это может вызвать?

Например, будут ли старые браузеры поддерживать его? (IE6 +, FF, Opera и др.)

Или, возможно, пользователи корпоративных брандмауэров / прокси-серверов блокируют приложение mime-типа / json?

Какие у вас были проблемы, если вы следовали этому совету?

Ответы [ 3 ]

3 голосов
/ 26 января 2011

Давайте рассмотрим 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

1 голос
/ 27 ноября 2012

После долгой борьбы с IE8 я обнаружил, что если вы загружаете json в iframe как текст / обычный текст, IE8 обернет это в тег.Если вы затем извлекаете контент с помощью innerHTML и пытаетесь разобрать его как json, это не удастся.

В итоге мне пришлось отправить контент в виде text / html, что просто кажется неправильным, но работает вIE и, похоже, не портит другим браузерам более современную обработку AJAX.

1 голос
/ 26 января 2011

Это обсуждалось ранее:

Каков правильный тип содержимого JSON?

Любые брандмауэры, которые блокируют MIME-тип, будут вызывать проблемы с любыми веб-приложениями в стиле AJAX, поэтому я действительно не стал бы беспокоиться об этом.

...