Дополнительно
Какой тип содержимого JSON является правильным?
Я некоторое время возился с JSON, просто передавая его в виде текста, и это никому не повредило (насколько я знаю), но я хотел бы начать делать все правильно.
Я видел очень много предполагаемых "стандартов" для типа содержимого JSON:
application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
Но какой из них правильный или лучший? Я понимаю, что между ними есть проблемы безопасности и поддержки браузеров.
Я знаю, что есть похожий вопрос, Какой тип MIME, если JSON возвращается REST API?, но я хотел бы получить более целенаправленный ответ.
9936
20
Для текста JSON:
application/json
.Для JSONP (запускаемый javascript) с обратным вызовом:
Вот некоторые статьи из блога, которые были упомянуты в комментариях и которые имеют отношение к делу.
text/html
для JSONapplication/json
IANA зарегистрировала официальный MIME Type для JSON как
application/json
.На вопрос, почему не
text/json
, Крокфорд, кажется, ответил, что JSON - это не совсем JavaScript и не текст, а также IANA с большей вероятностью выдастapplication/*
, чемtext/*
.Дополнительные ресурсы:
Для JSON:
Для JSON-P:.
Конечно, правильный тип MIME-медиа для JSON -
application/json
, но необходимо понимать, какой тип данных ожидается в вашем приложении.Например, я использую Ext GWT, и ответ сервера должен идти как text/html, но содержит данные JSON.
Клиентская сторона, слушатель форм Ext GWT.
В случае использования типа ответа application/json браузер предлагает мне сохранить файл.
Фрагмент исходного кода на стороне сервера с использованием Spring MVC.
В JSON:
Ответ динамически генерируемых данных, в соответствии с параметрами запроса в URL-адресе.
Пример:
Контент-тип:
приложение/JSON
В JSON-Р:
JSON с подкладкой. Ответ JSON-данные, при вызове функции, обернутые вокруг него.
Пример:
Контент-тип:
приложение/JavaScript
Если вы используете Ubuntu или Debian, и вы служите .JSON-файлы через Apache, вы, возможно, захотите, чтобы служить файлы с правильным типом контента. Я делаю это прежде всего потому, что я хочу использовать расширение Firefox JSONView
Модуль Apache mod_mime поможет вам сделать это легко. Однако, в Ubuntu вам необходимо отредактировать файл /и т. д./мим.типы и добавьте строку
Затем перезапустить Apache:
Если вы вызываете ASP.NET Web Services со стороны клиента, вам необходимо использовать
application/json
, чтобы это работало. Я полагаю, что это то же самое для фреймворков jQuery и Ext.Правильный тип содержимого для JSON-это
приложение/JSON
, если вы не're, используя JSONP в, также известный как JSON с подкладкой, которая на самом деле JavaScript и поэтому правильный тип контента будетприложение/JavaScript
.Нет никаких сомнений, что
приложение/JSON
- лучшее МИМ тип ответа JSON.Но я имел некоторый опыт, где я должен был использовать `приложения/x-javascript и из-за некоторых проблем сжатия. Мой хостинг среда хостинга с у GoDaddy. Они не позволяют мне менять конфигурации сервера. Я добавил следующий код в мой веб.файл конфигурации для сжатия ответов.
С помощью этого .aspx-страницы был сжат с G-молнии, но JSON ответы не были. Я добавил
в статических и динамических разделов видах. Но это не компресс JSON ответы на все.
После этого я удалила этот добавленный тип и добавил
в обоих статических и динамических разделов видах, и изменил тип реагирования в
.данного (асинхронный обработчик) в
И теперь я обнаружил, что мой JSON ответы были сжаты с G-молнии. Поэтому я лично рекомендую использовать
только если вы хотите сжать ваш JSON ответы на хостинга окружающей среды. Потому что в хостинга, они не позволяют вам изменить ИИС конфигурации.
Только при использовании
приложение/JSON
как МИМ тип у меня есть следующие (по состоянию на ноябрь 2011 года с последними версиями Chrome, Firefox с Жучка):Не все работает для типа контента
приложение/JSON
.Если вы используете доб&ампер;усилитель; nbsp;в JS форма отправить, чтобы загрузить файл, мы предупреждаем, что ответ сервера обрабатывается браузером, чтобы создать документ Для в
<iframe в>
.Если сервер с помощью JSON, чтобы отправить возвращаемый объект, то заголовок
тип содержимого
должен быть установлен втекст/HTML
, чтобы сообщить браузеру, чтобы вставить текст без изменений в тексте документа.Вижу доб с JS 3.4.0 документации по API.
JSON-это доменного языка (ДСЛ) и формат данных, независимый от языка JavaScript, и как таковое имеет свои собственные МИМ типа
приложение/JSON
. Уважение типов MIME, конечно, управляемый клиентом, поэтомутекст/равнина
может сделать для передачи байта, но тогда вы бы взвинчивая толкования к домену приложения без надобности -приложение/JSON
. Вы бы передачу XML черезтекст/равнина
?Но, честно говоря, ваш выбор тип MIME консультаций клиенту о том, как интерпретировать данные-
текст/равнина
илитекст/HTML
(когда он'ы не html) как тип стирания - это's, как неинформативные, как сделать все объекты типа Object в типизированном языке.Без выполнения браузером я знаю, будет принимать JSON-документ и автоматически сделать его доступным для выполнения в качестве доступного объекта JavaScript без вмешательства, но если вы работаете с хромой клиента, что'ы совершенно другое дело. Но, что's не вся история- спокойный JSON-сервисов часто не'т содержать JavaScript время выполнения, но это вовсе'т остановить их с помощью JSON в качестве жизнеспособного формата обмена данными. Если клиенты, которые покалечили... тогда я хотел бы рассмотреть, пожалуй, HTML инъекции через Аякс шаблонизатора вместо этого.
Приложение/JSON!
Если вы'вновь в клиентской среде, исследуя о кросс-браузер поддержка является обязательной для хорошо поддерживает веб-приложения.
Правильный тип содержимого HTTP будет
приложение/JSON
, как другие уже тоже выделены, но некоторые клиенты не очень хорошо, что's, почему в jQuery рекомендует по умолчаниютекст/HTML
.Правильный ответ:
Как многие другие упомянули,
приложение/JSON
- это правильный ответ.Но то, что не'т не объяснил, что других вариантов ты предложил значит.
приложение/х-на JavaScript
: экспериментальная тип MIME для JavaScript передприложение/JavaScript
был сделан стандарт.текст/JavaScript
: теперь устаревшим. Вы должны использоватьприложение/JavaScript
при использовании JavaScript.текст/х-на JavaScript
: экспериментальная тип MIME для описанной выше ситуации.текст/х-формат JSON
: экспериментальная тип MIME для JSON передприложение/JSON
официально зарегистрировались.Все в всех, когда у вас есть какие-либо сомнения о типах контента, вы должны проверить этой ссылке
В ССП, Вы можете использовать это в директиве страницы:
Правильный МИМ тип носителя для JSON-это
приложение/JSON
. JSP будет использовать его для отправки ответа клиенту.“`приложение/JSON” - это правильный тип JSON-контента.
Регистрация IANA для
приложение/JSON
говоритВы'Лл замечают, что IANA.org не't список какой-либо из этих других видов медиа, на самом деле даже
приложение/JavaScript
является теперь устаревшим. Так чтоприложение/JSON
- это действительно единственно возможный правильный ответ.Поддержка браузеров-это другое дело.
Наиболее широко поддерживает нестандартные типы носителей
текст/JSON с
илитекст/JavaScript
. Но некоторые знаменитости даже использоватьтекст/равнина
.Еще более странным является контент-тип заголовка, отправленного компанией Flickr, который возвращает JSON, как
текст/XML
. Текста Google используетрусский язык
для некоторых это'API-интерфейсов с помощью AJAX.Примеры:
Вывод:
содержимое-тип: текст/JavaScript
Вывод:
содержимое-тип: текст/XML
Правильный тип MIME
приложение/JSON
Но
Я пережил много ситуаций, когда тип браузера или базы пользователей необходимо:
Я использую ниже