JSON məzmununun düzgün növü nədir?

JSON ilə ətrafında danışmaq üçün bir müddət vaxt keçirdim, mətn kimi itirdim və hər kəsə (mənim bildiyimə) zərər vermədi, amma doğru şeylər etməyə başlayıram.

JSON məzmun növü üçün çox sayda "standartlar" gördük:

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

Amma doğru və ya yaxşı nədir? Anlayıram ki, onların arasında təhlükəsizlik problemləri və brauzer dəstəyi var.

Bənzər bir sualın var olduğunu bilirəm. JSON REST API ilə qaytarıldığında MIME növü nədir? lakin mən bir az daha çox odaklanmış cavab istərdim.

9470
25 янв. Oli tərəfindən təyin 25 2009-01-25 18:25 '09 da 18:25 'də 2009-01-25 18:25' də
@ 38 cavab
  • 1
  • 2

JSON mətni üçün:

application/json

JSON mətn üçün MIME media növü application/json . Standart kodlaşdırma UTF-8'dir. (Mənbə: RFC 4627 ).

Geri çağırış ilə JSONP (yürütülebilir javascript) üçün:

application/javascript

İşdə müvafiq olan şərhlərdə göstərilən bəzi blog yazıları.

9468
25 янв. Qumbo 25 yanvar cavab verdi 2009-01-25 18:27 '09 at 18:27 'da 2009-01-25 18:27

IANA, JSON üçün rəsmi MIME tipini application/json olaraq qeydiyyatdan keçmişdir.

text/json niyə olmasından soruşduqda, Crockford JSON həqiqətən JavaScript deyil, mətn olduğunu və IANA text*" enabled="false"/> </dynamicTypes> <staticTypes> <add mimeType="text*" enabled="false"/> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true"/>

Bununla .aspx səhifələr g-zip ilə sıxılmışdı, lakin JSON cavabları olmadı. Mən əlavə etdi

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

statik və dinamik növlər bölmələrində. Lakin bu, JSON cavablarını sıxışdırmaz.

Bundan sonra bu yeni əlavə tipi silindim və əlavə etdi

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

statik və dinamik növlər bölmələrində və cavab növünü dəyişdi

.asx (asynchronous handler) üzərində

 application/x-javascript 

Və indi JSON cavablarımın g-zip sıxılmış olduğunu gördüm. Buna görə də mən şəxsən istifadə etməyi məsləhət görürəm

 application/x-javascript 

JSON cavablarınızı ictimai bir mühitdə mühafizə etmək istəyirsinizsə yalnız. IIS konfiqurasiyasını paylaşılan hosting ilə dəyişməyə icazə vermədikləri üçün.

282
18 апр. cavab şaşwat 18 apr tərəfindən verilir . 2012-04-18 11:22 '12 at 11:22 2012-04-18 11:22

Yalnız MIME application/json istifadə edərkən (Chrome 2011-ci ilin noyabr ayından bu yana, Firebug ilə Firefox-dan) aşağıdakıları istifadə edirəm:

  • JSON-dan serverdən yüklənərkən Chrome-dan daha çox xəbərdarlıq.
  • Firebug, JSON formatlı məlumatları göstərən cavabı bir sekme əlavə edəcək. MIME növü fərqlidirsə, "Cavab məzmunu" kimi göstərilir.
257
30 нояб. Cavab Ivo Limmen tərəfindən verilir. 2011-11-30 09:42 '11 at 9:42 2011-11-30 09:42

Hər şey məzmun tipi application/json .

Bir fayl göndərmək üçün Ext JS istifadə etsəniz, <iframe> üçün bir sənəd yaratmaq üçün serverin cavabı brauzer tərəfindən təhlil edildiyini unutmayın.

Server, qaytarılan obyektin göndərilməsi üçün JSON istifadə etsə, brauzerin sənədin gövdəsinə dəyişiklik etmədən mətni daxil etməsini bildirmək üçün Content-Type başlığının text/html olaraq təyin edilməsi lazımdır.

Ext JS 3.4.0 API sənədlərinə baxın .

232
07 сент. Conan cavab 07 Sep 2011-09-07 05:41 '11 at 5:41 am 2011-09-07 05:41

JSON bir domen dili (DSL) və JavaScript-dən müstəqil olan məlumat formatıdır və bununla da öz MIME , application/json . MIME növlərinə hörmət, əlbəttə, müştəriyə bağlıdır, buna görə text/plain baytların ötürülməsi üçün nə edə bilər, ancaq proqram təminatının tətbiqi - application/json domeninin təfsirini çox təfsilatlı edəcəksiniz. XML text/plain ?

Ancaq səmimi olaraq, MIME növündəki seçiminiz, text/plain və ya text/HTML (HTML olmadıqda) kimi üslubları silmək kimi məlumatları necə şərh etməsi barədə məsləhətdir - yazdığınız bütün obyektləri yaratmaq kimi informasiyadır dil.

Mən bildiyim brauzer icra vaxtının çatışmazlığı bir JSON sənədini alacaq və avtomatik olaraq JavaScript-i müdaxilə edə bilən bir obyekt kimi iş müddətinə təqdim edə bilər, amma şikəst olan bir müştəri ilə işləyən bir başqa məsələdir. Amma bu hekayə deyil. RESTful JSON xidmətlərində tez-tez JavaScript özerkliği yoxdur, ancaq bunlar, JSON'i canlı bir məlumat mübadiləsi formatı olaraq istifadə etmələrinə mane olmur. Müştərilərə zərər verildikdə ... HTML inyeksiyasının bir Ajax şablonu istifadə edildiyini düşünürəm.

Ərizə / JSON!

217
15 мая '12 в 1:19 2012-05-15 01:19 cavab VLostBoy tərəfindən mayın 15, '12 'də 1:19 2012-05-15 01:19' də verilir

Müştərilər üçün bir mühitdə olsanız, yaxşı dəstəklənən web proqramı üçün cross-browser dəstək tədqiqat tələb olunur.

Düzgün HTTP Content-Type application/json , çünki başqaları artıq zənginləşdirilmişdir, lakin bəzi müştərilər bunu çox yaxşı işləmirlər, belə ki, jQuery default text/html istifadə etməyi tövsiyə edir.

201
27 апр. Cavab Emanuel Del Grande tərəfindən verilir 27 Apr. 2012-04-27 19:27 '12 at 7:27 pm 2012-04-27 19:27

Düzgün cavab:

 Content-Type: application/json 
159
31 дек. cavab İrfan DANISH tərəfindən verilir 31 dekabr. 2012-12-31 09:29 '13 saat 09:29 'da 2012-12-31 09:29

Bir çox başqaları kimi, application/json doğru cavabdır.

Ancaq təklif etdiyin digər variantlar nə deməkdir hələ açıqlanmır.

  • application/x-javascript : application/javascript əvvəl JavaScript üçün eksperimental MIME növü standart idi.

  • text/javascript : indi qaldırıldı. application/javascript istifadə edərkən application/javascript istifadə etməlisiniz.

  • text/x-javascript : yuxarıda göstərilən vəziyyət üçün eksperimental MIME növü.

  • text/x-json : application/json əvvəl JSON üçün eksperimental MIME növü application/json rəsmi qeydiyyatdan keçdi.

Ümumiyyətlə, məzmun növlərinə dair şübhə olduğunuz zaman bu linki yoxlamaq lazımdır .

156
02 апр. Cavab verildi 02 aprel 2013-04-02 14:10 '13 'da 14:10 2013-04-02 14:10

JSP-də, bu səhifəni direktivdə istifadə edə bilərsiniz:

 <%@ page > 

JSON üçün doğru MIME növü application/json . JSP, müştəriyə bir cavab göndərmək üçün istifadə edəcək.

139
19 янв. Cavab verilir raja 19 yanvar. 2013-01-19 11:22 '13 at 11:22 2013-01-19 11:22

" application/json " JSON məzmununun düzgün növüdür.

 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 февр. Cavab 26 fevralda Sukane tərəfindən verilir . 2013-02-26 14:55 '13 'da 14:55' də 2013-02-26 14:55

application/json for IANA qeydiyyat application/json deyir

Bu media növü istifadə edən proqramlar: JSON bütün bu proqramlaşdırma dillərində yazılmış proqramlar arasında məlumat mübadiləsi üçün istifadə edilmişdir: ActionScript, C, C #, Clojure, ColdFusion, Common Lisp, E, Er>

IANA.org bu digər media növlərindən heç birini qeyd etmir , hətta application/javascript köhnəlmişdir. Beləliklə, application/json həqiqətən yeganə doğru cavabdır.

Brauzer dəstəyi başqa bir şeydir.

Ən qeyri-standart olmayan media növləri text/json və ya text/javascript . Ancaq bəzi böyük isimlər text/plain istifadə edirlər.

Hatta yabanci, JSON'ı text/xml kimi qaytaran Flickr tərəfindən göndərilən Content-Type text/xml . Google, bəziları üçün ajax apis üçün text/javascript istifadə edir.

Nümunələr:

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

Çıxış: Content-Type: text/javascript

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

Çıxış: Content-Type: text/xml

98
12 февр. Jhawins tərəfindən verilmiş cavab 12 fevral 2014-02-12 19:12 '14 at 19:12 2014-02-12 19:12

Doğru növü MIME application/json

BUT

Bir brauzer növü və ya çərçivə istifadəçisinə ehtiyacım olduqda bir çox hallarda yaşadım:

 text/html application/javascript 
83
03 мая '13 в 19:00 2013-05-03 19:00 Cavab LombaX 03 May '13 saat 19: 00-da verilir

Mən aşağıda istifadə edirəm

 contentType: 'application/json', data: JSON.stringify(SendData), 
70
16 мая '13 в 15:43 2013-05-16 15:43 cədvəl Andro tərəfindən 16 May 'da 15:43' də verildi 2013-05-16 15:43

Content-Type başlığının başlığı dərc edildikdə tətbiq / json olaraq təyin olunmalıdır. Tələbi dinləyən server " Accept = application / json " daxil olmalıdır. Bahar MVC-də bunu aşağıdakı kimi edə bilərsiniz:

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

Cavab üçün başlıqlar əlavə edin:

 HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json"); 
62
09 авг. Alexander Burakeviç tərəfindən verilmiş cavab 09 Avqust. 2013-08-09 13:49 '13 at 13:49 2013-08-09 13:49

Baharda xüsusi bir növü var: MediaType.APPLICATION_JSON_VALUE , tətbiq / json ilə bərabərdir.

55
29 июня '13 в 11:34 2013-06-29 11:34 Cavab Chand Priyankara tərəfindən 29 İyun 2013 tarixində 11:34 2013-06-29 11:34

application/json bir sıra və ya məlumat obyektinin saxlanması üçün PHP-də gözəl işləyir.

İzləmək üçün açıq olaraq quraşdırılmış Google Cloud Storage (GCS) üzərindəki JSON-da data qoymaq üçün bu kodu istifadə edirəm:

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

Birbaşa məlumatları qaytarmaq üçün:

 $data = json_decode(file_get_contents("gs://BUCKETNAME/FILENAME.json")); 
55
01 апр. Cavab Çetabahana verildi 01 Aprel. 2015-04-01 19:13 '15 'da 19:13' de, 2015-04-01 19:13

JSON üçün istifadə edirəm:

  Content-Type: application/json 

Bu, IETF JSON Data Interchange Format 7158 bəndində, Bölüm 1.2: JSON spesifikasiyalarında təsvir edilmişdir.

47
06 февр. Cavab Mehmet_ 06 fevralda verilir. 2015-02-06 15:01 '15 at 15:01 2015-02-06 15:01

JSON doldurulursa, application/jsonp . JSON heç bir əlavə deyilsə, application/json .

Onlara öhdəsindən gəlmək üçün, "ərizə / javascript" istifadə etmək məsləhətdir, bununla dolu və ya padding olmadan olub-olmaması barədə narahat olmayın.

47
21 июня '13 в 18:22 2013-06-21 18:22 Cavab Ankit Zalani tərəfindən 21 İyun '13 'də 6:22 2013-06-21 18:22' də verilir

REST kontekstində JSON istifadə etdiyiniz zaman alınan cavabların genişləndirilməsi ...

Resursları və REST koleksiyasını təqdim etdiyiniz zaman application/x-resource+jsonapplication/x-collection+json istifadə haqqında güclü bir güclü dəlil var .

Və siz jsonapi spesifikasiyasına əməl etməyinizə qərar verərsinizsə , sənədləşdirildikdə application/vnd.api+json istifadə application/vnd.api+json .

Heç bir universal standart olmasa da, köçürülmüş resursların əlavə semantikası yalnız application/json daha aydın Content-Type-i əsaslandırır.

Bu mülahizələrdən sonra digər kontekstlər daha konkret məzmun tipinə əsaslana bilər.

40
09 июня '15 в 22:12 2015-06-09 22:12 cavab jgomo3 09 iyun '15, saat 10:12 'da verilir. 2015-06-09 22:12

PHP developers bunu istifadə edir:

 <?php header("Content-type: application/json"); // Do something here... ?> 
39
29 марта '14 в 8:43 2014-03-29 08:43 Cavab istifadəçi tərəfindən verilir 3087089 29 mart 'da 8:43 2014-03-29 08:43

JSON-da REST API-dan məlumat əldə etsəniz, məzmun növündən istifadə etməlisiniz

 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 апр. Apr 11-də Krishna tərəfindən verilmiş cavab 2016-04-11 12:15 '16 saat 12:15 'də 2016-04-11 12:15

JSON (JavaScript Nesnəsi Təyinatı) və JSONP ("padding ilə JSON") çox oxşar görünür və buna görə də onlar MIME növündən istifadə etmələri çox şaşırtıcı ola bilər. Formatlar çox oxşar görünsə da, onların arasında bir sıra fərqlər var.

Buna görə də, şübhə olduğumda, mənim çox sadə bir yanaşma var (çox hallarda yaxşı işləyir), yəni getmək və müvafiq RFC sənədini yoxlamaq.

JSON RFC 4627 (JavaScript Nesneleri Təqdim edən Application Type / json Media) JSON formatı xüsusiyyətidir. Bölmə 6, JSON mətn üçün MIME multimedia növü olduğunu bildirir

 application/json. 

JSONP JSONP ("əlavə ilə JSON") brauzerdə JSON-dan fərqli olaraq işlənir. JSONP müntəzəm JavaScript skripti kimi qəbul edilir və buna görə də application/javascript, mövcud rəsmi MIME növü application/javascript, istifadə etməlidir. Bir çox hallarda, text/javascript MIME növü yaxşı işləyəcəkdir.

text/javascript köhnəlmiş RFC 4329 (Scripting Media Types) olaraq qeyd olunduğunu və yerinə application/javascript istifadə edilməsini tövsiyə edin. Lakin, miras alınmış səbəblərdən ötəri text/javascript hələ geniş istifadə olunur və cross-brauzeri dəstəkləyir (həmişə application/javascript tipi application/javascript MIME, xüsusən köhnə brauzerlərdə deyil).

23
15 февр. 15 fevralda Iresha Rubasinghe tərəfindən verilən cavabı. 2016-02-15 06:20 '16 'da 6:20' də 2016-02-15 06:20 'də

Content-Type: application/json - JSON
Content-Type: application/javascript - json-P
Content-Type: application/x-javascript - javascript
Content-Type: text/javascript - javascript, lakin köhnəlmiş, html xüsusiyyətindən istifadə etmək üçün istifadə edilən IE'nin köhnə versiyaları.
Content-Type: text/x-javascript - JavaScript Multimedia növləri BUT istifadə edilməmişdir
Content-Type: text/x-json - json ərizə / json rəsmi qeydiyyatdan əvvəl.

22
08 авг. Cavab Kashif So> tərəfindən verilir 08 av . 2017-08-08 06:49 '17 də 6:49 2017-08-08 06:49
  • 1
  • 2

tags ilə bağlı digər suallar və ya bir sual