सवाल सही JSON सामग्री प्रकार क्या है?


मैं चारों ओर गड़बड़ कर रहा हूँ JSON कुछ समय के लिए, इसे पाठ के रूप में बाहर दबाकर और किसी को भी चोट नहीं पहुंची है (जिसे मैं जानता हूं), लेकिन मैं चीजों को ठीक से शुरू करना चाहता हूं।

मैंने देखा है इसलिए जेएसओएन सामग्री प्रकार के लिए कई "मानक" मानक:

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

लेकिन जो सही है, या सबसे अच्छा है? मैं इकट्ठा करता हूं कि सुरक्षा और ब्राउज़र समर्थन मुद्दे उनके बीच भिन्न हैं।

मुझे पता है कि एक समान सवाल है, यदि आरईएसटी एपीआई द्वारा जेएसओएन वापस किया जा रहा है तो क्या एमआईएमई प्रकार?, लेकिन मुझे थोड़ा अधिक लक्षित उत्तर चाहिए।


9201
2018-01-25 15:25


मूल




जवाब:


JSON टेक्स्ट के लिए:

application/json

JSON टेक्स्ट के लिए MIME मीडिया प्रकार है application/json। डिफ़ॉल्ट एन्कोडिंग यूटीएफ -8 है। (स्रोत: आरएफसी 4627)।

के लिये JSONP (रनने योग्य जावास्क्रिप्ट) कॉलबैक के साथ:

application/javascript

यहां कुछ ब्लॉग पोस्ट हैं जिनका उल्लेख प्रासंगिक टिप्पणियों में किया गया था।


9176
2018-01-25 15:27



एमआईएमई प्रकार की पूरी सूची - Eugen Mihailescu
क्या मैं एक साथ जेसन पाठ भेज सकता हूं? - OPV
क्या वास्तव में यह मायने रखता है कि माइम प्रकार क्या है? यह पाठ है जो किसी ऑब्जेक्ट में पार्स हो जाता है। यदि आप इसे बिना किसी बल डाउनलोड के ब्राउज़र में खुलेआम होना चाहते हैं, और एप्लिकेशन / ऑक्टेट-स्ट्रीम के रूप में इसे स्वचालित रूप से डाउनलोड करना चाहते हैं, तो इसे टेक्स्ट / सादे के रूप में पास करना अधिक स्वाभाविक नहीं होगा (यदि आप इसे उत्पन्न कर रहे हैं तो उपयोगी एक वेबपृष्ठ जिसे स्थानीय रूप से सहेजा जाना है)। क्या वास्तव में बहुत से लोग हैं जिन्हें माइम प्रकार को जानने की आवश्यकता होगी ताकि डाउनलोडर इसे विशेष जेसन व्यूअर के साथ देख सके? मुझे क्या याद आ रहा है जो इसे एक विशेष माइम प्रकार की गारंटी देता है? - Dmitry
"टेक्स्ट / सादा" का प्रयोग सामान्य रूप से एक खराब अभ्यास है। उदाहरण के लिए, वेब प्लेटफॉर्म पर हमले हैं जो क्रॉस-मूल डेटा चोरी की अनुमति देंगे यदि आप उचित MIME प्रकार मान भेजने में विफल रहते हैं। - EricLaw
कभी-कभी इंटरनेट एक्सप्लोरर में एप्लिकेशन / जेसन के साथ समस्याएं होती हैं - ब्लॉग ऑफ़लाइन है - codetoshare


IANA जेएसओएन के लिए आधिकारिक एमआईएमई प्रकार पंजीकृत है application/json

जब पूछा गया क्यों नहीं text/jsonऐसा लगता है कि क्रॉकफोर्ड ने कहा है कि जेएसओएन वास्तव में जावास्क्रिप्ट नहीं है और न ही पाठ है और आईएएनए भी हाथ से बाहर होने की संभावना है application/* से text/*

और अधिक संसाधनों:


1473
2018-04-07 04:32



बहुत सी चीजें डाल दी गईं text/* शुरुआती दिनों में सेक्शन जो शायद इसमें डाल दिया जाएगा application/* इन दिनों खंड। - TRiG
और यह एक बड़ी गलती इमो है। जेएसओएन टेक्स्ट है। किसी भी पाठ संपादक द्वारा पढ़ा / लिखा जा सकता है। यह जानने के लिए मूल्यवान है, लेकिन से प्राप्त नहीं किया जा सकता है application/json। मुझे लगता है कि पाठ संपादक के साथ खोले जा सकने वाले सभी चीजों के लिए यह बहुत अच्छा होगा text, विशिष्ट एक्सएमएल सिद्धांतों के तहत text/xml/xhtmlआदि ... यह वास्तव में आयोजन में मदद मिलेगी। - Stijn de Witt
मैं एक खोल सकता हूँ .jpg मेरे पाठ संपादक में। - Rohmer
@ रोमर - आप टेक्स्ट एडिटर में कुछ भी खोल सकते हैं, लेकिन जेपीईजी या विंडोज़ .exe या a .zip जैसे बाइनरी प्रारूप में गैर-प्रिंट करने योग्य वर्ण होंगे जो वास्तव में कई टेक्स्ट एडिटर्स को तोड़ सकते हैं या अवांछित व्यवहार का कारण बन सकते हैं। दौड़ने का प्रयास करें cat file.jpg उदाहरण के लिए। जबकि कोई एक्सएमएल या जेसन फ़ाइल 100% प्रिंट करने योग्य है। तो मुझे लगता है कि Stijn de Witt का बिंदु वैध है, इस तथ्य के बावजूद कि हाँ, अब बदलना बहुत देर हो चुकी है। - XP84
@ XP84 आप हेक्स फॉर्म में टेक्स्ट एडिटर के साथ कोई बाइनरी खोल सकते हैं। और सभी अलग-अलग पात्र (उनमें से 16) 100% प्रिंट करने योग्य हैं। तो, उस तर्क से ... सभी द्विआधारी पाठ हैं?  जेसन पाठ नहीं है। जेसन है (चेतावनी: आगे अनौपचारिक ढीली परिभाषा) एक वस्तु का एक पाठ प्रतिनिधित्व (या वस्तुओं की सरणी) - xDaizu


JSON के लिए:

Content-Type: application/json

के लिये JSON-P:

Content-Type: application/javascript

786
2018-06-20 03:10



JSONP वास्तव में जेएसओएन नहीं है, हालांकि यह एक जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक पारित करने की तकनीक है - Benjamin Gruenbaum


बेशक, जेएसओएन के लिए सही एमआईएम मीडिया प्रकार है application/json, लेकिन यह जानना आवश्यक है कि आपके आवेदन में किस प्रकार का डेटा अपेक्षित है।

उदाहरण के लिए, मैं उपयोग करता हूं अतिरिक्त जीडब्ल्यूटी और सर्वर प्रतिक्रिया के रूप में जाना चाहिए पाठ / html लेकिन JSON डेटा शामिल है।

ग्राहक पक्ष, अतिरिक्त जीडब्ल्यूटी फॉर्म श्रोता

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");
    }
});

उपयोग करने के मामले में आवेदन / json प्रतिक्रिया प्रकार, ब्राउज़र मुझे फ़ाइल को सहेजने के लिए सुझाव देता है।

सर्वर साइड सोर्स कोड स्निपेट का उपयोग कर वसंत 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);
    }
};

584
2017-10-07 14:35



सर्वर प्रतिक्रिया पाठ / एचटीएमएल के रूप में जाना चाहिए। यह ExtJS संस्करण के लिए भी सच है। - gbegley


JSON:

URL में पारित क्वेरी पैरामीटर के अनुसार प्रतिक्रिया गतिशील रूप से जेनरेट की गई डेटा है।

उदाहरण:

{ "Name": "Foo", "Id": 1234, "Rank": 7 }

सामग्री प्रकार:  application/json


JSON-पी:

पैडिंग के साथ JSON। प्रतिक्रिया जेएसओएन डेटा है, इसके चारों ओर एक फंक्शन कॉल लपेटा गया है।

उदाहरण:

functionCall({"Name": "Foo", "Id": 1234, "Rank": 7});

सामग्री प्रकार:  application/javascript


427
2018-03-28 07:54



उपर्युक्त उत्तर की तुलना में इसमें कम वोट कैसे हैं, यह अधिक पूर्ण है और इसमें परिभाषाएं हैं .. - Daniel Waters
@DanielWaters JSON की परिभाषा गलत है। इसे गतिशील रूप से उत्पन्न या क्वेरी पैरामीटर का सम्मान करने की आवश्यकता नहीं है। आप एक स्थिर JSON फ़ाइल की सेवा कर सकते हैं। इसके अलावा, सबसे ऊपर दिए गए उत्तर में आरएफसी का एक लिंक है। - styfle
इसके अलावा जेएसओएनपी एक var को आवंटित जेसन डेटा भी हो सकता है। - Jimmy Kane


यदि आप उबंटू या डेबियन का उपयोग कर रहे हैं और आप अपाचे के माध्यम से .json फ़ाइलों की सेवा करते हैं, तो आप सही सामग्री प्रकार वाली फ़ाइलों को सेवा देना चाहेंगे। मैं इसे मुख्य रूप से कर रहा हूं क्योंकि मैं फ़ायरफ़ॉक्स एक्सटेंशन का उपयोग करना चाहता हूं JSONView

अपाचे मॉड्यूल mod_mime इसे आसानी से करने में मदद मिलेगी। हालांकि, उबंटू के साथ आपको फ़ाइल को संपादित करने की आवश्यकता है /etc/mime.types और रेखा जोड़ें

application/json json

फिर अपाचे को पुनरारंभ करें:

sudo service apache2 restart

372
2017-11-16 22:58



आमतौर पर एक रीलोड पर्याप्त है (पुनरारंभ करने से तेज़)। साथ ही, ध्यान दें कि अब आप "सुडो सेवा अपाचे 2 रीलोड" कर सकते हैं। - noamtm
उबंटू 12.04 डिफ़ॉल्ट रूप से यह है - Prizoff


यदि आप क्लाइंट-साइड से एएसपी.NET वेब सेवाओं को कॉल कर रहे हैं तो आपको इसका उपयोग करना होगा application/json इसके लिए काम करने के लिए। मेरा मानना ​​है कि यह वही है jQuery तथा ext चौखटे।


361
2018-01-25 15:31



jQuery कम से कम 'एप्लिकेशन / जेसन' और 'टेक्स्ट / सादे' के साथ काम करता प्रतीत होता है ... हालांकि मैंने अन्य सभी की कोशिश नहीं की है। - Nathan
jQuery के साथ काम करने में सक्षम है content-Type: text/plain, content-Type: application/json, content-Type: application/json; charset=UTF-8, contentType: "application/x-www-form-urlencoded; charset=UTF-8" - Ashraf.Shk786


जेएसओएन के लिए सही सामग्री प्रकार है application/jsonआप का उपयोग कर रहे हैं JSONP, जिसे पैडिंग के साथ जेएसओएन भी कहा जाता है, जो वास्तव में जावास्क्रिप्ट है और इसलिए सही सामग्री प्रकार होगा application/javascript


287
2018-04-12 04:00





इसमें कोई शक नहीं कि application/json सबसे अच्छा है माइम एक JSON प्रतिक्रिया के लिए टाइप करें।

लेकिन मुझे कुछ अनुभव था जहां मुझे उपयोग करना पड़ा application/x-javascript कुछ संपीड़न मुद्दों के कारण। मेरे होस्टिंग पर्यावरण के साथ होस्टिंग साझा किया जाता है पिताजी जाओ। वे मुझे सर्वर कॉन्फ़िगरेशन बदलने की अनुमति नहीं देते हैं। मैंने अपने लिए निम्नलिखित कोड जोड़ा था web.config प्रतिक्रियाओं को संपीड़ित करने के लिए फ़ाइल।

<httpCompression>
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>

इसका उपयोग करके, .aspx पृष्ठों को जी-ज़िप के साथ संपीड़ित किया गया था लेकिन JSON प्रतिक्रियाएं नहीं थीं। मैंने कहा

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

स्थिर और गतिशील प्रकार के वर्गों में। लेकिन यह जेएसओएन प्रतिक्रियाओं को बिल्कुल संपीड़ित नहीं करता है।

इसके बाद मैंने इस नए जोड़े गए प्रकार को हटा दिया और जोड़ा

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

स्थिर और गतिशील प्रकार दोनों वर्गों में, और प्रतिक्रिया प्रकार बदल दिया

.ashx (asynchronous हैंडलर) करने के लिए

application/x-javascript

और अब मैंने पाया कि मेरे JSON प्रतिक्रियाओं को जी-ज़िप के साथ संपीड़ित किया गया था। तो मैं व्यक्तिगत रूप से उपयोग करने की सलाह देते हैं

application/x-javascript

केवल तभी जब आप अपने JSON प्रतिक्रियाओं को एक पर संपीड़ित करना चाहते हैं साझा होस्टिंग पर्यावरण। क्योंकि साझा होस्टिंग में, वे आपको बदलने की अनुमति नहीं देते हैं आईआईएस विन्यास।


277
2018-04-18 08:22



"इसलिए मैं व्यक्तिगत रूप से एप्लिकेशन / एक्स-जावास्क्रिप्ट का उपयोग करने की सिफारिश करता हूं" वह जगह है जहां यह उत्तर भ्रामक हो जाता है। पिताजी जाओ कर देता है संपीड़न की अनुमति दें application/json, मैं इसे अपने साझा होस्टिंग पर लेवर करता हूं और मैं संपीड़न को सक्षम करने के लिए किसी भिन्न सामग्री प्रकार का उपयोग करने का सुझाव नहीं दूंगा, यह बस गलत है। यह किया जा सकता है, लेकिन यह अभी भी गलत होगा। के लिए विभिन्न सामग्री प्रकार का उपयोग करना ब्राउज़र समर्थन एक बात है, सर्वर-साइड संपीड़न के लिए विभिन्न सामग्री प्रकारों का उपयोग करना एक और है। - Lady Bird


केवल उपयोग करते समय application/json के रूप में माइम टाइप करें मेरे पास निम्न है (नवंबर 2011 तक क्रोम के नवीनतम संस्करणों के साथ, फ़ायरफ़ॉक्स के साथ Firebug):

  • जेएसओएन सर्वर से लोड होने पर क्रोम से कोई और चेतावनी नहीं।
  • फायरबग आपको जेएसओएन डेटा दिखाते हुए प्रतिक्रिया में एक टैब जोड़ देगा स्वरूपित। यदि एमआईएमई प्रकार अलग है, तो यह सिर्फ दिखाएगा 'प्रतिक्रिया सामग्री'।

252
2017-11-30 06:42