border=0

"77.95.5.4 - 77.95.5.4"

Wat is het juiste type JSON-inhoud?

Ik heb een tijdje met JSON geknoeid en het gewoon als tekst weggedrukt, en het deed niemand pijn (wat ik weet), maar ik wil graag dingen goed doen.

Ik heb zoveel zogenaamde 'standaarden' gezien voor het inhoudstype JSON:

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

Maar wat klopt, of beter? Ik begrijp dat er tussen hen beveiligingsproblemen en browserondersteuning zijn.

Ik weet dat er een vergelijkbare vraag is. Wat is het MIME-type als JSON wordt geretourneerd door de REST API? maar ik zou graag een iets meer gefocust antwoord willen.

9470
25 янв. ingesteld door Oli 25 jan 2009-01-25 18:25 '09 om 18:25 2009-01-25 18:25
@ 38 antwoorden
  • 1
  • 2

Voor JSON-tekst:

application/json

Het MIME-mediatype voor JSON-tekst is application/json . De standaardcodering is UTF-8. (Bron: RFC 4627 ).

Voor JSONP (uitvoerbaar javascript) met callback:

application/javascript

Hier zijn enkele blogberichten die werden genoemd in de opmerkingen die relevant zijn voor de zaak.

9468
25 янв. Gumbo antwoordde op 25 januari 2009-01-25 18:27 '09 om 18:27 2009-01-25 18:27

IANA heeft het officiële JSON MIME-type geregistreerd als application/json .

Op de vraag waarom niet text/json , lijkt Crockford te hebben gezegd dat JSON niet echt JavaScript is, maar tekst, en dat IANA waarschijnlijk application*" enabled="false"/> </dynamicTypes> <staticTypes> <add mimeType="text*" enabled="false"/> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true"/>

Hiermee werden de .aspx-pagina's gecomprimeerd met g-zip, maar de JSON-antwoorden niet. Ik heb toegevoegd

 <add mimeType="application/json" enabled="true"/> 

in delen van statische en dynamische typen. Maar dit comprimeert helemaal geen JSON-antwoorden.

Hierna heb ik dit nieuwe toegevoegde type verwijderd en toegevoegd

 <add mimeType="application/x-javascript" enabled="true"/> 

in secties van statische en dynamische types en veranderde het type reactie in

.ashx (asynchrone handler) aan

 application/x-javascript 

En nu ontdekte ik dat mijn JSON-antwoorden g-zip gecomprimeerd waren. Daarom raad ik persoonlijk aan om te gebruiken

 application/x-javascript 

alleen als u uw JSON-antwoorden in een openbare hostingomgeving wilt comprimeren. Omdat ze u niet toestaan ​​om IIS- configuraties op gedeelde hosting te wijzigen.

282
18 апр. shashwat antwoord is 18 april 2012-04-18 11:22 '12 om 11:22 uur 2012-04-18 11:22

Alleen als ik application/json als MIME, heb ik het volgende (sinds november 2011 met de nieuwste versies van Chrome, Firefox met Firebug ):

  • Geen waarschuwingen meer van Chrome bij het downloaden van JSON van de server.
  • Firebug voegt een tabblad toe aan het antwoord dat u JSON-geformatteerde gegevens toont. Als het MIME-type anders is, wordt het weergegeven als "Response Content".
257
30 нояб. Antwoord gegeven aan Ivo Limmen 30 november 2011-11-30 09:42 '11 om 9:42 2011-11-30 09:42

Niet alles werkt voor de application/json van het inhoudstype application/json .

Als u Ext JS gebruikt om een ​​bestand te verzenden, moet u er rekening mee houden dat het antwoord van de server door de browser wordt geanalyseerd om een ​​document voor <iframe> .

Als de server JSON gebruikt om het geretourneerde object te verzenden, moet de kop Content-Type worden ingesteld op text/html om de browser te laten de tekst zonder wijzigingen in de hoofdtekst van het document plakken.

Zie de Ext JS 3.4.0 API-documentatie .

232
07 сент. Conan antwoordde 07 september 2011-09-07 05:41 '11 om 5:41 uur 2011-09-07 05:41

JSON is een domeinnaamtaal (DSL) en een gegevensindeling die niet afhankelijk is van JavaScript en als zodanig zijn eigen MIME , application/json . Respect voor MIME-typen is natuurlijk afhankelijk van de client, zodat text/plain kan doen om bytes over te zetten, maar dan interpreteert u de interpretatie van het domein van de applicatieprovider - application/json - application/json . Krijg je XML via text/plain ?

Maar eerlijk gezegd, uw keuze voor het MIME-type is klantadvies over hoe u gegevens interpreteert - text/plain of text/HTML (wanneer het geen HTML is), zoals wisstijlen - het is niet informatief, zoals het maken van al uw objecten op een getypt taal.

Gebrek aan browser-uitvoeringstijd, waarvan ik weet dat het een JSON-document zal nemen en dit automatisch beschikbaar zal maken voor de runtime als een object dat toegankelijk is voor JavaScript, zonder tussenkomst, maar als u werkt met een kreupele client, is dat een andere zaak. Maar dit is niet het hele verhaal. RESTful JSON-services hebben vaak geen JavaScript-autonomie, maar dit weerhoudt hen er niet van JSON te gebruiken als een uitvoerbaar gegevensuitwisselingsformaat. Als klanten beschadigd zijn ... dan zou ik denken dat het mogelijk is dat HTML-injectie wordt gedaan met behulp van een Ajax- sjabloon.

Toepassing / JSON!

217
15 мая '12 в 1:19 2012-05-15 01:19 het antwoord wordt gegeven door VLostBoy 15 mei '12 om 1:19 uur 2012-05-15 01:19 uur

Als u zich in een client-sideomgeving bevindt, is onderzoek voor cross-browserondersteuning vereist voor een goed ondersteunde webtoepassing.

Het juiste HTTP- application/json is application/json , omdat anderen al zijn toegewezen, maar sommige clients gaan hier niet zo goed mee om, daarom raadt jQuery aan om de standaardtekst text/html .

201
27 апр. Het antwoord wordt gegeven door Emanuele Del Grande 27 apr. 2012-04-27 19:27 '12 om 19:27 uur 2012-04-27 19:27

Het juiste antwoord is:

 Content-Type: application/json 
159
31 дек. het antwoord wordt gegeven door Irfan DEENS 31 dec. 2012-12-31 09:29 '13 om 9:29 2012-12-31 09:29

Zoals vele anderen, is application/json het juiste antwoord.

Maar het is nog niet uitgelegd wat de andere opties die u aanbiedt, betekenen.

  • application/x-javascript : Het experimentele MIME-type voor JavaScript vóór application/javascript was standaard.

  • text/javascript : nu verouderd. U moet de application/javascript bij het gebruik van javascript.

  • text/x-javascript : Experimenteel MIME-type voor de bovenstaande situatie.

  • text/x-json : experimenteel MIME-type voor JSON vóór application/json ontving officiële registratie.

Over het algemeen moet je deze link aanvinken wanneer je twijfels hebt over de soorten inhoud .

156
02 апр. het antwoord wordt gegeven fcm 02 april 2013-04-02 14:10 '13 om 14:10 2013-04-02 14:10

In JSP kunt u dit gebruiken in de paginarichtlijn:

 <%@ page > 

Het juiste MIME- type voor JSON is application/json . JSP zal het gebruiken om een ​​antwoord naar de klant te sturen.

139
19 янв. het antwoord is raja 19 jan. 2013-01-19 11:22 '13 om 11:22 2013-01-19 11:22

" application/json " is het correcte type JSON-inhoud.

 def ajaxFindSystems = { def result = Systems.list() render(contentType:'application/json') { results { result.each{sys-> system(id:sys.id, name:sys.name) } } resultset (rows:result.size()) } } 
108
26 февр. Het antwoord wordt door Sukane gegeven op 26 februari. 2013-02-26 14:55 '13 om 14:55 uur 2013-02-26 14:55

IANA-registratie voor application/json zegt

Toepassingen met dit mediatype: JSON werd gebruikt om gegevens uit te wisselen tussen applicaties geschreven in al deze programmeertalen: ActionScript, C, C #, Clojure, ColdFusion, Common Lisp, E, Er>

U zult opmerken dat IANA.org geen van deze andere soorten media opslaat, in feite is zelfs application/javascript verouderd. application/json is dus echt het enige juiste antwoord.

Browserondersteuning is iets anders.

De meest voorkomende niet-standaard mediatypen zijn text/json of text/javascript . Maar sommige grote namen gebruiken zelfs text/plain .

Nog vreemder is de Content-Type header verzonden door Flickr, die JSON retourneert als text/xml . Google gebruikt text/javascript voor sommigen van hen ajax apis.

voorbeelden:

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

Uitvoer: Content-Type: text/javascript

 curl -I "https://www.flickr.com/services/rest/?method=flickr.test.echo> 

Uitvoer: Content-Type: text/xml

98
12 февр. Antwoord van Jhawins 12 februari 2014-02-12 19:12 '14 om 19:12, 2014-02-12 19:12

Het juiste type is MIME- application/json

MAAR

Ik heb veel situaties meegemaakt wanneer ik een browsertype of een framework-gebruiker nodig heb:

 text/html application/javascript 
83
03 мая '13 в 19:00 2013-05-03 19:00 het antwoord is gegeven LombaX 03 mei '13 om 19:00 uur 2013-05-03 19:00 uur

Ik gebruik hieronder

 contentType: 'application/json', data: JSON.stringify(SendData), 
70
16 мая '13 в 15:43 2013-05-16 15:43 het antwoord werd gegeven door Andro op 16 mei 13 om 15:43 2013-05-16 15:43

De kop van de kop Content-Type moet tijdens het publiceren op application / json worden ingesteld. De server die naar het verzoek luistert, moet " Accept = application / json " bevatten. In Spring MVC kun je dit als volgt doen:

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

Voeg headers toe aan het antwoord:

 HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json"); 
62
09 авг. Antwoord gegeven door Alexander Burakevych 09 aug. 2013-08-09 13:49 '13 om 13:49 uur 2013-08-09 13:49 uur

In het voorjaar heeft u een specifiek type: MediaType.APPLICATION_JSON_VALUE , dat gelijk is aan application / json.

55
29 июня '13 в 11:34 2013-06-29 11:34 het antwoord wordt gegeven door Chand Priyankara op 29 juni '13 om 11:34 2013-06-29 11:34

application/json werkt prima in PHP voor het opslaan van een array- of data-object.

Ik gebruik deze code om gegevens in JSON in Google Cloud Storage (GCS) te plaatsen , die publiekelijk beschikbaar is voor weergave :

 $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 ); 

Om gegevens rechtstreeks terug te sturen:

 $data = json_decode(file_get_contents("gs://BUCKETNAME/FILENAME.json")); 
55
01 апр. Het antwoord is gegeven Chetabahana 01 apr. 2015-04-01 19:13 '15 om 19:13 2015-04-01 19:13

Voor JSON gebruik ik:

  Content-Type: application/json 

Dit wordt beschreven in de IETF JSON Data Interchange Format 7158-clausule, paragraaf 1.2: JSON-specificaties .

47
06 февр. Het antwoord wordt gegeven door Mehmet_ 06 feb. 2015-02-06 15:01 '15 om 15:01 2015-02-06 15:01

Als de JSON wordt gevuld, is het application/jsonp . Als JSON geen add-on heeft, is het application/json .

Om hiermee om te gaan, is het aanbevolen om: "application / javascript" te gebruiken, zonder u zorgen te hoeven maken of het met of zonder padding is.

47
21 июня '13 в 18:22 2013-06-21 18:22 het antwoord wordt gegeven door Ankit Zalani op 21 juni '13 om 6:22 2013-06-21 18:22

Uitbreiding van ontvangen antwoorden wanneer u JSON gebruikt in de context van REST ...

Er is een sterk argument over het gebruik van application/x-resource+json en application/x-collection+json wanneer u bronnen en REST-collecties presenteert.

En als u besluit de jsonapi- specificatie te volgen, moet u application/vnd.api+json zoals gedocumenteerd.

Hoewel er geen universele standaard is, is het duidelijk dat de toegevoegde semantiek van de overgedragen bronnen een meer expliciet application/json rechtvaardigt dan alleen application/json .

Volgens deze overwegingen kunnen andere contexten een meer specifiek inhoudstype rechtvaardigen.

40
09 июня '15 в 22:12 2015-06-09 22:12 het antwoord wordt gegeven jgomo3 09 juni '15 om 10:12 uur 2015-06-09 22:12

PHP-ontwikkelaars gebruiken dit:

 <?php header("Content-type: application/json"); // Do something here... ?> 
39
29 марта '14 в 8:43 2014-03-29 08:43 het antwoord wordt gegeven door user3087089 29 maart '14 om 8:43 2014-03-29 08:43

Als u de gegevens van de REST-API in JSON ophaalt, moet u het inhoudstype gebruiken

 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 
37
11 апр. Het antwoord wordt gegeven door Krishna op 11 april. 2016-04-11 12:15 '16 om 12:15 uur 2016-04-11 12:15 uur

JSON (JavaScript-objectnotatie) en JSONP ("JSON met opvulling") lijken erg op elkaar, en daarom kan het erg verwarrend zijn welk type MIME ze moeten gebruiken. Hoewel de indelingen erg op elkaar lijken, zijn er enkele subtiele verschillen tussen beide.

Daarom, wanneer ik twijfel, heb ik een zeer eenvoudige benadering (die in de meeste gevallen goed werkt), namelijk, ga en controleer het overeenkomstige RFC-document.

JSON RFC 4627 (Toepassingstype / json Media voor het aanwijzen van JavaScript-objecten (JSON)) is een JSON-indelingsspecificatie. In hoofdstuk 6 staat dat het MIME-multimediatype voor JSON-tekst is

 application/json. 

JSONP JSONP ("JSON met invoegtoepassing") wordt in de browser anders verwerkt dan JSON. JSONP wordt behandeld als een standaard javascript-script en daarom moet het de application/javascript, huidige officiële MIME-type voor javascript. In veel gevallen zal het text/javascript MIME-type echter goed werken.

Let op: text/javascript is gemarkeerd als verouderde RFC 4329 (Scripting Media Types), en het wordt aanbevolen om in plaats daarvan de application/javascript gebruiken. Vanwege overgeërfde oorzaken wordt text/javascript echter nog steeds veel gebruikt en ondersteunt cross-browser (wat niet altijd het type application/javascript MIME is, vooral in oudere browsers).

23
15 февр. Antwoord van Iresha Rubasinghe op 15 februari 2016-02-15 06:20 '16 om 6:20 2016-02-15 06:20

Content-Type: application/json - JSON
Content-Type: application/javascript - json-P
Content-Type: application/x-javascript - javascript
Content-Type: text/javascript - javascript, MAAR verouderde, oudere versies van IE, werd vroeger gebruikt als html-kenmerk.
Content-Type: text/x-javascript - JavaScript Multimedia Types MAAR Obsolete
Content-Type: text/x-json - json voorafgaand aan de officiële registratie van de toepassing / json.

22
08 авг. Het antwoord wordt gegeven door Kashif So> 08 aug. 2017-08-08 06:49 17 om 6:49 2017-08-08 06:49

Zie andere vragen over tags of Ask a Question