Json content type text javascript

Каков правильный тип контента JSON?

Я некоторое время возился с JSON, просто выдвигал его в виде текста, и это никому не повредило (насколько я знаю), но я хотел бы начать делать все правильно.

Я видел так много предполагаемых «стандартов» для типа контента JSON:

application/json application/x-javascript text/javascript text/x-javascript text/x-json 

Но какой из них правильный или лучший? Я понимаю, что между ними существуют проблемы с безопасностью и поддержкой браузера.

Я знаю там похожий вопрос: какой тип MIME, если JSON возвращается REST API? , но я бы хотел более точный ответ.

ОТВЕТЫ

Ответ 1

application/json

Тип мультимедиа MIME для текста JSON — это application/json . Кодировка по умолчанию — UTF-8. (Источник: RFC 4627).

Для JSONP (исполняемый JavaScript) с обратным вызовом:

Вот некоторые сообщения в блоге, которые были упомянуты в комментариях, которые имеют отношение к делу.

Ответ 2

IANA зарегистрировал официальный MIME-тип для JSON как application/json .

Когда его спросили о том, почему не text/json , Крокфорд, похоже, сказал, что JSON на самом деле не JavaScript, а текст, а IANA скорее всего передаст application/* , чем text/* .

Ответ 3

Content-Type: application/json 
Content-Type: application/javascript 

Ответ 4

Конечно, правильный тип MIME-носителя для JSON — application/json , но необходимо понять, какой тип данных ожидается в вашем приложении.

Например, я использую Ext GWT, и ответ сервера должен быть text/html, но содержит данные JSON.

Клиентская сторона, слушатель формы Ext GWT

uploadForm.getForm().addListener(new FormListenerAdapter() < @Override public void onActionFailed(Form form, int httpStatus, String responseText) < MessageBox.alert("Error"); >@Override public void onActionComplete(Form form, int httpStatus, String responseText) < MessageBox.alert("Success"); >>); 

В случае использования типа ответа application/json, браузер предлагает мне сохранить файл.

Фрагмент исходного кода на стороне сервера, используя Spring MVC

return new AbstractUrlBasedView() < @SuppressWarnings("unchecked") @Override protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception < response.setContentType("text/html"); response.getWriter().write(json); >>; 

Ответ 5

JSON:

Ответ — это динамически генерируемые данные в соответствии с параметрами запроса, переданными в URL.

Content-Type: application/json

JSON-P:

JSON с отступом. Ответ — это данные JSON, с обходом вокруг него вызова функции.

Content-Type: application/javascript

Ответ 6

Если вы используете Ubuntu или Debian, и вы обслуживаете файлы .json через Apache, вы можете использовать файлы с правильным типом контента. Я делаю это прежде всего потому, что хочу использовать расширение Firefox JSONView

Модуль Apache mod_mime поможет сделать это легко. Однако с Ubuntu вам нужно отредактировать файл /etc/mime.types и добавить строку

Затем перезапустите Apache:

sudo service apache2 restart 

Ответ 7

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

Читайте также:  Javascript this object value

Ответ 8

Правильный тип контента для JSON application/json Если вы используете JSONP, также известный как JSON с Padding, который на самом деле является JavaScript, и поэтому правильный тип содержимого был бы application/javascript .

Ответ 9

Нет сомнений в том, что application/json является лучшим MIME для ответа JSON.

Но у меня был некоторый опыт, когда мне пришлось использовать application/x-javascript из-за некоторых проблем с компрессией. Моя среда размещения — это общий хостинг с GoDaddy. Они не позволяют мне менять конфигурацию сервера. Я добавил следующий код в мой web.config файл для сжатия ответов.

Используя это, страницы .aspx были сжаты с помощью g-zip, но ответы JSON не были. Я добавил

в разделах статического и динамического типов. Но это не сжимает ответы JSON вообще.

После этого я удалил этот новый добавленный тип и добавил

в разделах статического и динамического типов и изменил тип ответа в

.ashx(асинхронный обработчик) на

И теперь я обнаружил, что мои ответы JSON были сжаты g-zip. Поэтому я лично рекомендую использовать

только если вы хотите сжать свои ответы JSON в общедоступной среде размещения. Поскольку на общем хостинге они не позволяют вам изменять конфигурации IIS.

Ответ 10

Только при использовании application/json в качестве MIME у меня есть следующее (с ноября 2011 года с последними версиями Chrome, Firefox с Firebug):

  • Больше никаких предупреждений от Chrome при загрузке JSON с сервера.
  • Firebug добавит вкладку в ответ, показывающий вам данные JSON отформатирована. Если тип MIME отличается, он будет отображаться как «Содержимое ответа».

Ответ 11

Не все работает для типа контента application/json .

Если вы используете Ext JS для отправки файла, имейте в виду, что ответ сервера анализируется браузером для создания документа для .

Если сервер использует JSON для отправки возвращаемого объекта, то заголовок Content-Type должен быть установлен в text/html , чтобы сообщить браузеру вставить текст без изменений в тело документа.

Ответ 12

JSON является доменным языком (DSL) и форматом данных, не зависящим от JavaScript, и, как таковой, имеет свой MIME, application/json . Уважение к типам MIME, конечно, зависит от клиента, поэтому text/plain может делать для передачи байтов, но тогда вы будете излишне толковать интерпретацию домена приложения поставщика — application/json . Передаете ли вы XML через text/plain ?

Но, честно говоря, ваш выбор типа MIME — это совет клиенту относительно того, как интерпретировать данные — text/plain или text/HTML (когда он не является HTML) подобен стиранию стилей — он неинформативен, как создание всех ваших объектов типа Object на типизированном языке.

Отсутствие времени выполнения браузера, которое я знаю, займет документ JSON и автоматически сделает его доступным для среды выполнения как объект, доступный для JavaScript, без вмешательства, но если вы работаете с искалеченным клиентом, это совсем другое дело. Но это не вся история. RESTful Сервисы JSON часто не имеют времени автономной работы JavaScript, но это не мешает им использовать JSON в качестве жизнеспособного формата обмена данными. Если клиенты повреждены. тогда я бы подумал, возможно, что HTML-инъекция выполняется с помощью Ajax шаблона.

Читайте также:  Spawning process in python

Ответ 13

Если вы находитесь в среде на стороне клиента, исследование для поддержки кросс-браузера является обязательным для хорошо поддерживаемого веб-приложения.

Правильный HTTP Content-Type будет application/json , поскольку другие уже выделены тоже, но некоторые клиенты не справляются с этим очень хорошо, поэтому jQuery рекомендует использовать по умолчанию text/html .

Ответ 14

Content-Type: application/json 

Ответ 15

Как и многие другие, application/json — правильный ответ.

Но еще не объяснено, что другие варианты, которые вы предлагаете, означают.

  • application/x-javascript : Экспериментальный тип MIME для JavaScript до application/javascript был стандартным.
  • text/javascript : теперь устарело. Вы должны использовать application/javascript при использовании javascript.
  • text/x-javascript : Экспериментальный тип MIME для вышеуказанной ситуации.
  • text/x-json : экспериментальный тип MIME для JSON до application/json получил официальную регистрацию.

В целом, всякий раз, когда у вас возникают сомнения в отношении типов контента, вы должны проверить эту ссылку

Ответ 16

В JSP вы можете использовать это в директиве страницы:

Правильный тип MIME для JSON — application/json . JSP будет использовать его для отправки ответа клиенту.

Ответ 17

» application/json » — правильный тип содержимого JSON.

def ajaxFindSystems = < def result = Systems.list() render(contentType:'application/json') < results < result.eachsystem(id:sys.id, name:sys.name) > > resultset (rows:result.size()) > > 

Ответ 18

Приложения, использующие этот тип носителя: JSON использовался для обмена данными между приложениями, написанными на всех этих языках программирования: ActionScript, C, С#, Clojure, ColdFusion, Common Lisp, E, Erlang, Go, Java, JavaScript, Lua, Objective CAML, Perl, PHP, Python, Rebol, Ruby, Scala и Scheme.

Вы заметите, что IANA.org не перечисляет ни один из этих других типов носителей, на самом деле даже application/javascript устарело. Таким образом, application/json — это действительно единственный правильный ответ.

Поддержка браузера — это еще одна вещь.

Наиболее широко распространенными нестандартными типами носителей являются text/json или text/javascript . Но некоторые большие имена даже используют text/plain .

Еще более странным является заголовок Content-Type, отправленный Flickr, который возвращает JSON в виде text/xml . Google использует text/javascript для некоторых из них ajax apis.

curl -I "https://ajax.googleapis.com/ajax/services/search/video?v=1.0&q=jsonexample" 

Выход: Content-Type: text/javascript

curl -I "https://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=f82254c1491d894f1204d8408f645a93" 

Выход: Content-Type: text/xml

Ответ 19

Правильный тип MIME application/json

Я испытал много ситуаций, когда нужен тип браузера или пользователь фреймворка:

text/html application/javascript 

Ответ 20

contentType: 'application/json', data: JSON.stringify(SendData), 

Ответ 21

Заголовок заголовка Content-Type должен быть установлен в application/json при публикации. Сервер, прослушивающий запрос, должен включать » Accept = application/json«. В Spring MVC вы можете сделать это следующим образом:

@RequestMapping(value="location", method = RequestMethod.POST, headers = "Accept=application/json") 

Добавьте заголовки в ответ:

HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json"); 

Ответ 22

В Spring у вас есть определенный тип: MediaType.APPLICATION_JSON_VALUE , который эквивалентен application/json.

Ответ 23

application/json отлично работает в PHP для хранения массива или объекта данных.

Я использую этот код для размещения данных в JSON на Google Cloud Storage (GCS), который установлен общедоступно для просмотра:

$context = stream_context_create([ 'gs' => [ 'acl'=>'public-read', 'Content-Type' => 'application/json', ] ]); file_put_contents( "gs://BUCKETNAME/FILENAME.json", json_encode((object) $array), false, $context ); 

Чтобы вернуть данные прямо:

$data = json_decode(file_get_contents("gs://BUCKETNAME/FILENAME.json")); 

Ответ 24

Если JSON с заполнением, то это будет application/jsonp . Если JSON не имеет дополнения, то это будет application/json .

Читайте также:  Try catch java numberformat

Чтобы справиться с ними, рекомендуется использовать: «application/javascript», не беспокоясь о том, есть ли это с заполнением или без заполнения.

Ответ 25

 Content-Type: application/json 

Это описано в предложении IETF JSON Data Interchange Format 7158, Раздел 1.2: Спецификации JSON.

Ответ 26

Расширение принятых ответов, когда вы используете JSON в контексте REST.

Существует сильный сильный аргумент об использовании application/x-resource+json и application/x-collection+json , когда вы представляете ресурсы и коллекции REST.

И если вы решите следовать спецификации jsonapi, вы должны использовать application/vnd.api+json , как это документировано.

Хотя нет универсального стандарта, ясно, что добавленная семантика передаваемых ресурсов оправдывает более явный Content-Type, чем просто application/json .

Следуя этим соображениям, другие контексты могли бы оправдать более конкретный Content-Type.

Ответ 27

Разработчики PHP используют это:

Ответ 28

Если вы получаете данные из REST API в JSON, поэтому вам нужно использовать тип содержимого

For JSON data: Content-Type:application/json For HTML data: Content-Type:text/html, For XHTML data: Content-Type:application/xhtml+xml, For XML data: Content-Type:text/xml, application/xml 

Ответ 29

Форматы JSON (JavaScript Object Notation) и JSONP («JSON with padding») кажутся очень похожими, и поэтому может быть очень запутанным, какой тип MIME они должны использовать. Хотя форматы похожи, между ними есть некоторые тонкие различия.

Поэтому, когда бы ни возникали какие-либо сомнения, у меня есть очень простой подход (который в большинстве случаев работает отлично), а именно, пойти и проверить соответствующий документ RFC.

JSON RFC 4627 (Приложение/JSON Media Type для JavaScript Object Notation (JSON)) является спецификацией формата JSON. В разделе 6 говорится, что тип мультимедиа MIME для текста JSON:

JSONP JSONP («JSON with padding») обрабатывается в браузере не так, как JSON. JSONP рассматривается как обычный сценарий JavaScript, и поэтому он должен использовать application/javascript, текущий официальный тип MIME для JavaScript. Однако во многих случаях MIME-тип text/javascript будет работать нормально.

Обратите внимание, что text/javascript был помечен как устаревший в документе RFC 4329 (Scripting Media Types), и вместо него рекомендуется использовать тип application/javascript . Однако из-за устаревших причин text/javascript по-прежнему широко используется и имеет межбраузерную поддержку (что не всегда имеет место с типом MIME application/javascript , особенно в старых браузерах).

Ответ 30

Content-Type: application/json — JSON
Content-Type: application/javascript — json-P
Content-Type: application/x-javascript — javascript
Content-Type: text/javascript — javascript, НО устаревшие, более старые версии IE, используемые для использования в качестве атрибута html.
Content-Type: text/x-javascript — Типы мультимедиа JavaScript НО устарели
Content-Type: text/x-json — json до официальной регистрации приложения /json.

Источник

Оцените статью