সঠিক JSON কন্টেন্ট টাইপ কি?




content-type (24)

আমি কিছুক্ষণের জন্য JSON সাথে ঘিরে JSON , শুধু পাঠ্য হিসাবে এটি চাপিয়ে দিচ্ছি এবং এটি যে কেউ (যা আমি জানি) কে আঘাত করে না, তবে আমি সঠিকভাবে কাজ শুরু করতে চাই।

আমি JSON সামগ্রীর প্রকারের জন্য অনেকগুলি প্রত্যয়িত "মানক" দেখেছি:

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

কিন্তু যা সঠিক, বা ভাল? আমি তাদের মধ্যে পরিবর্তিত নিরাপত্তা এবং ব্রাউজার সমর্থন সমস্যা আছে যে জড়ো করা।

আমি জানি একটি অনুরূপ প্রশ্ন আছে, JSON কোনও REST API দ্বারা ফেরত পাঠানো হলে MIME টাইপ কি? , কিন্তু আমি একটি সামান্য আরো লক্ষ্যবস্তু উত্তর চাই।


JSON (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন) এবং JSONP ("প্যাডিং সহ JSON") ফর্ম্যাটগুলি খুব অনুরূপ বলে মনে হয় এবং এটি খুব বিভ্রান্তিকর হতে পারে যে এটি কোন MIME টাইপ ব্যবহার করা উচিত। যদিও ফর্ম্যাটগুলি খুব অনুরূপ বলে মনে হচ্ছে, তাদের মধ্যে কিছু সূক্ষ্ম পার্থক্য রয়েছে।

তাই যখনই কোন সন্দেহ থাকে, আমার খুব সহজ পদ্ধতি রয়েছে (যা বেশিরভাগ ক্ষেত্রে পুরোপুরি খুঁজে বের করে), অর্থাত্, যান এবং সংশ্লিষ্ট RFC নথিটি পরীক্ষা করুন।

JSON RFC 4627 (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (JSON) এর জন্য অ্যাপ্লিকেশন / জসন মিডিয়া প্রকারটি JSON বিন্যাসের একটি নির্দিষ্টকরণ। এটি ধারা 6 এ বলে যে, JSON পাঠ্যের জন্য MIME মিডিয়া টাইপটি

application/json.

JSONP JSONP ("প্যাডিং সহ JSON") একটি ব্রাউজারে JSON এর চেয়ে ভিন্ন ভাবে পরিচালিত হয়। JSONP কে নিয়মিত জাভাস্ক্রিপ্ট স্ক্রিপ্ট হিসেবে বিবেচনা করা হয় এবং এটির জন্য জাভাস্ক্রিপ্টের বর্তমান অফিসিয়াল MIME টাইপ application/javascript, ব্যবহার করা উচিত। অনেক ক্ষেত্রে, যাইহোক, text/javascript MIME টাইপ জরিমানা কাজ করবে।

উল্লেখ্য যে text/javascript rfc-editor.org/rfc/rfc4329.txt (স্ক্রিপ্টিং মিডিয়া প্রকার) নথি দ্বারা অপ্রচলিত হিসাবে চিহ্নিত করা হয়েছে এবং এটি পরিবর্তে application/javascript প্রকার ব্যবহার করার পরামর্শ দেওয়া হয়েছে। যাইহোক, লিগ্যাসি কারণে, text/javascript এখনও ব্যাপকভাবে ব্যবহৃত হয় এবং এটি ক্রস-ব্রাউজার সমর্থন (যা সর্বদা application/javascript MIME টাইপের ক্ষেত্রে নয়, বিশেষ করে পুরানো ব্রাউজারগুলির ক্ষেত্রে)।


JSON পাঠ্যের জন্য:

application/json

JSON টেক্সটের জন্য MIME মিডিয়া টাইপ application/json । ডিফল্ট এনকোডিংটি ইউটিএফ -8। (উত্স: আরএফসি 4627 )।

JSONP ( JSONP জাভাস্ক্রিপ্ট) জন্য:

application/javascript

এখানে এমন কিছু ব্লগ পোস্ট রয়েছে যা মন্তব্যগুলিতে উল্লেখ করা হয়েছে।


আপনি যদি উবুন্টু বা ডেবিয়ান ব্যবহার করেন এবং আপনি Apache এর মাধ্যমে .json ফাইলগুলি সরবরাহ করেন তবে আপনি সঠিক সামগ্রী টাইপ সহ ফাইলগুলি পরিবেশন করতে চাইতে পারেন। আমি প্রাথমিকভাবে এটি করছি কারণ আমি ফায়ারফক্স এক্সটেনশন JSONView ব্যবহার করতে JSONView

Apache মডিউল mod_mime এই সহজে করতে সাহায্য করবে। যাইহোক, উবুন্টুর সাথে আপনার ফাইলটি /etc/mime.types সম্পাদনা করতে হবে এবং লাইন যোগ করতে হবে

application/json json

তারপর Apache পুনরায় আরম্ভ করুন:

sudo service apache2 restart

application/json যখন MIME টাইপ হিসাবে ব্যবহার করে তখন আমার নিম্নলিখিত আছে (নভেম্বর ২011 হিসাবে ক্রোমের সাম্প্রতিক সংস্করণগুলির সাথে, Firebug সহ ফায়ারফক্স):

  • যখন Chrome থেকে সার্ভার থেকে লোড হয় তখন Chrome থেকে আর কোন সতর্কতা নেই।
  • ফায়ারবগ প্রতিক্রিয়াতে একটি ট্যাব যুক্ত করবে যা আপনাকে JSON ডাটা ফর্ম্যাট দেখাবে। যদি MIME টাইপটি ভিন্ন হয় তবে এটি কেবল 'প্রতিক্রিয়া সামগ্রী' হিসাবে প্রদর্শিত হবে।

আমি নীচের ব্যবহার

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

সঠিক উত্তর হল:

Content-Type: application/json

সবকিছু কন্টেন্ট টাইপ application/json জন্য কাজ করে না।

যদি আপনি Ext JS ফর্ম ব্যবহার করেন তবে ফাইল আপলোড করার জন্য জমা দিন, সচেতন থাকুন যে <iframe> জন্য দস্তাবেজ তৈরির জন্য সার্ভার প্রতিক্রিয়াটি ব্রাউজার দ্বারা পার্স করা হয়েছে।

সার্ভার যদি রিটার্ন অবজেক্ট পাঠানোর জন্য JSON ব্যবহার করে তবে ব্রাউজারকে নথির দেহে অপরিবর্তিত টেক্সট সন্নিবেশ করানোর জন্য Content-Type শিরোনামটি text/html এ সেট করা আবশ্যক।

Ext JS 3.0.0 API ডকুমেন্টেশন দেখুন


যদি JSON প্যাডিংয়ের সাথে থাকে তবে এটি application/jsonp । JSON প্যাডিং ছাড়া হয় তাহলে এটি application/json

উভয়কে মোকাবেলা করার জন্য, এটি ব্যবহার করার জন্য একটি ভাল অনুশীলন: 'অ্যাপ্লিকেশন / জাভাস্ক্রিপ্ট' এটি প্যাডিং বা প্যাডিংয়ের সাথে বিরক্ত না করেই।


কোন JSON প্রতিক্রিয়া জন্য application/json সেরা MIME টাইপ কোন সন্দেহ নেই।

কিন্তু আমার কিছু অভিজ্ঞতা ছিল যেখানে কিছু কম্প্রেশন সমস্যাগুলির কারণে আমাকে application/x-javascript ব্যবহার করতে হয়েছিল। আমার হোস্টিং পরিবেশ GoDaddy সঙ্গে হোস্টিং শেয়ার করা হয়। তারা আমাকে সার্ভার কনফিগারেশন পরিবর্তন করার অনুমতি দেয় না। আমি প্রতিক্রিয়া কম্প্রেস করার জন্য আমার 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"/>

স্ট্যাটিক এবং গতিশীল ধরনের বিভাগে। কিন্তু এই সব JSON প্রতিক্রিয়া সংকুচিত না।

তারপরে আমি এই নতুন যোগ করা টাইপ মুছে ফেলা এবং যোগ

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

উভয় স্ট্যাটিক এবং গতিশীল ধরনের বিভাগে, এবং প্রতিক্রিয়া টাইপ পরিবর্তন

.ashx (অ্যাসিঙ্ক্রোনাস হ্যান্ডলার) থেকে

application/x-javascript

এবং এখন আমি দেখেছি যে আমার JSON প্রতিক্রিয়া জি-জিপ দিয়ে সংকুচিত হয়েছে। তাই আমি ব্যক্তিগতভাবে ব্যবহার করার সুপারিশ

application/x-javascript

শুধুমাত্র আপনি ভাগ করা হোস্টিং পরিবেশে আপনার JSON প্রতিক্রিয়া কম্প্রেস করতে চান। কারণ ভাগ হোস্টিং, তারা আপনাকে IIS কনফিগারেশন পরিবর্তন করার অনুমতি দেয় না।


অবশ্যই, JSON এর জন্য সঠিক MIME মিডিয়া টাইপটি হল application/json , তবে আপনার অ্যাপ্লিকেশানে কোন ধরনের ডেটা প্রত্যাশিত হবে তা বুঝতে হবে।

উদাহরণস্বরূপ, আমি Ext GWT ব্যবহার করি এবং সার্ভার প্রতিক্রিয়াটি পাঠ্য / এইচটিএমএল হিসাবে যেতে হবে তবে 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");
    }
});

অ্যাপ্লিকেশন / জসন প্রতিক্রিয়া টাইপ ব্যবহার করার ক্ষেত্রে, ব্রাউজার ফাইলটি সংরক্ষণ করার পরামর্শ দেয়।

স্প্রিং 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);
    }
};

তাদেরকে JSON:

প্রতিক্রিয়া ইউআরএল পাস কোয়েরি পরামিতি অনুযায়ী, গতিশীলভাবে উত্পন্ন তথ্য।

উদাহরণ:

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

বিষয়বস্তু-প্রকার: application/json

তাদেরকে JSON-পি:

প্যাডিং সঙ্গে JSON। প্রতিক্রিয়া JSON তথ্য, এটি প্রায় আবৃত একটি ফাংশন কল সঙ্গে।

উদাহরণ:

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

বিষয়বস্তু-প্রকার: application/javascript


আইএএনএ application/json হিসাবে JSON এর জন্য অফিসিয়াল মাইম টাইপ নিবন্ধন করেছে।

text/json কেন না বলে জিজ্ঞাসা করলে ক্রোকফোর্ড বলেছিলেন যে JSON আসলে জাভাস্ক্রিপ্ট বা পাঠ্য নয় এবং আইএএনএটি text/* চেয়ে application/* হস্তান্তর করার সম্ভাবনা বেশি ছিল।

আরো সম্পদ:


ডান মাইম টাইপ application/json

কিন্তু

আমি ব্রাউজারের ধরন বা ফ্রেমওয়ার্ক ব্যবহারকারীর প্রয়োজন যেখানে অনেক পরিস্থিতিতে সম্মুখীন:

text/html

application/javascript

যেমন অনেকে উল্লেখ করেছেন, application/json সঠিক উত্তর।

কিন্তু এখনো ব্যাখ্যা করা হয় নি আপনি অন্য প্রস্তাব বিকল্প কি।

  • application/x-javascript : application/javascript স্ট্যান্ডার্ড আগে জাভাস্ক্রিপ্ট জন্য পরীক্ষামূলক MIME টাইপ।

  • text/javascript : এখন অপ্রচলিত। application/javascript ব্যবহার করার সময় আপনি application/javascript ব্যবহার করা উচিত।

  • text/x-javascript : উপরের পরিস্থিতি জন্য পরীক্ষামূলক MIME টাইপ।

  • text/x-json : application/json আনুষ্ঠানিকভাবে নিবন্ধিত আগে JSON জন্য পরীক্ষামূলক MIME টাইপ।

সর্বোপরি, যখনই আপনার সামগ্রী ধরনের সম্পর্কে কোন সন্দেহ থাকে, তখন আপনাকে এই লিঙ্কটি পরীক্ষা করা উচিত


Spring আপনার একটি নির্ধারিত প্রকার রয়েছে: MediaType.APPLICATION_JSON_VALUE যা অ্যাপ্লিকেশন / MediaType.APPLICATION_JSON_VALUE সমতুল্য।


JSON এর জন্য সঠিক সামগ্রী টাইপ হল application/json JSONP যদি আপনি JSONP ব্যবহার করেন JSONP এটি প্যাডিং সহ JSON নামে পরিচিত, যা আসলে জাভাস্ক্রিপ্ট এবং তাই সঠিক সামগ্রী টাইপ application/javascript


" application/json " সঠিক JSON কন্টেন্ট টাইপ।

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())
  }
}

JSON একটি ডোমেন-নির্দিষ্ট ভাষা (ডিএসএল) এবং জাভাস্ক্রিপ্ট থেকে স্বাধীন একটি ডেটা ফরম্যাট এবং এটির নিজস্ব MIME টাইপ, application/json । MIME প্রকারের জন্য অবশ্যই অবশ্যই ক্লায়েন্ট চালিত, সুতরাং বাইট স্থানান্তর করার জন্য text/plain করতে পারে, তবে আপনি application/json বিক্রেতার অ্যাপ্লিকেশন ডোমেনটির ব্যাখ্যাটিকে ধাক্কা দিবেন - application/json । আপনি text/plain মাধ্যমে এক্সএমএল স্থানান্তরিত হবে?

কিন্তু সৎভাবে, MIME টাইপের আপনার পছন্দের ক্লায়েন্টকে তথ্য- text/plain বা text/HTML (যখন এটি HTML না হয়) কীভাবে ব্যাখ্যা করা যায় তার পরামর্শ দেওয়া হয়- এটি আপনার সমস্ত বস্তুর অবজেক্ট তৈরি করার মতো অবজ্ঞাপূর্ণ একটি টাইপ ভাষা।

কোনও ব্রাউজার রানটাইম আমি জানি না একটি JSON নথি গ্রহণ করবে এবং এটি স্বয়ংক্রিয়ভাবে রানআউটের জন্য একটি জাভাস্ক্রিপ্ট অ্যাক্সেসেশান হিসাবে অ্যাক্সেসযোগ্য অ্যাক্সেস হিসাবে উপলব্ধ করবে, কিন্তু যদি আপনি একটি ক্লিপ ক্লায়েন্টের সাথে কাজ করছেন তবে এটি সম্পূর্ণ ভিন্ন ব্যাপার। কিন্তু এটি সম্পূর্ণ গল্প RESTful পূর্ববর্তী JSON পরিষেবাদিতে প্রায়শই জাভাস্ক্রিপ্ট রানটাইম থাকে না, তবে এটি একটি কার্যকর তথ্য বিনিময় বিন্যাস হিসাবে JSON ব্যবহার করে তাদের থামাতে পারে না। যদি ক্লায়েন্টরা অক্ষম হয় ... তবে আমি পরিবর্তে একটি Ajax টেম্পলেটিং পরিষেবা এর মাধ্যমে এইচটিএমএল ইনজেকশন বিবেচনা করব।

অ্যাপ্লিকেশান / তাদেরকে JSON!


আইএএনএ নিবন্ধনের application/json বলেছেন

এই মিডিয়া টাইপটি ব্যবহার করে এমন অ্যাপ্লিকেশনগুলি: JSON ব্যবহার করা হয়েছে এই সমস্ত প্রোগ্রামিং ভাষাগুলির মধ্যে লিখিত অ্যাপ্লিকেশনগুলির মধ্যে তথ্য বিনিময় করতে ব্যবহৃত হয়েছে: অ্যাকশনস্ক্রিপ্ট, সি, সি #, ক্লোজার, কোলফিউশন, সাধারণ লিসপ, ই, ইर्लং, গো, জাভা, জাভাস্ক্রিপ্ট, লুয়া, উদ্দেশ্য CAML, পার্ল, পিএইচপি, পাইথন, রেবোল, রুবি, স্কাল এবং স্কিম।

আপনি লক্ষ্য করবেন যে IANA.org এই অন্য কোনও মিডিয়া প্রকারের তালিকা দেয় না , আসলেও application/javascript এখন অপ্রচলিত। তাই application/json সত্যিই সম্ভব সঠিক উত্তর।

ব্রাউজার সমর্থন অন্য জিনিস।

সর্বাধিক ব্যাপকভাবে সমর্থিত নন-মান মিডিয়া ধরনের text/json বা text/javascript । কিন্তু কিছু বড় নাম এমনকি text/plain ব্যবহার।

এমনকি আরো অদ্ভুত বিষয় ফ্লিকারের দ্বারা প্রেরিত বিষয়বস্তু-টাইপ শিরোনাম, যারা JSON text/xml হিসাবে text/xml । গুগল এর কিছু AJAX অ্যাপিসের জন্য text/javascript ব্যবহার করে।

উদাহরণ:

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


আপনি যদি ক্লায়েন্ট-পার্শ্ব পরিবেশে থাকেন তবে ক্রস-ব্রাউজার সমর্থন সম্পর্কে তদন্ত করা একটি ভাল সমর্থিত ওয়েব অ্যাপ্লিকেশনের জন্য বাধ্যতামূলক।

সঠিক এইচটিএমএল সামগ্রী-টাইপ application/json , যেমনটি অন্যদের ইতিমধ্যে হাইলাইট করা হয়েছে, কিন্তু কিছু ক্লায়েন্ট এটি খুব ভালভাবে পরিচালনা করে না, তাই jQuery ডিফল্ট text/html সুপারিশ করে।


JSON এর জন্য:

Content-Type: application/json

JSONP :

Content-Type: application/javascript

Content-type: application/json - জসন
Content-Type: application/javascript - জসন-পি
Content-type: application/x-javascript - জাভাস্ক্রিপ্ট
Content-type: text/javascript - জাভাস্ক্রিপ্ট কিন্তু অপ্রচলিত, পুরানো সংস্করণগুলি HTML বৈশিষ্ট্য হিসাবে ব্যবহার করতে ব্যবহৃত হয়।
Content-type: text/x-javascript - জাভাস্ক্রিপ্ট মিডিয়া ধরন কিন্তু অপ্রচলিত
Content-type: text/x-json - অ্যাপ্লিকেশন আগে জসন / জson আনুষ্ঠানিকভাবে নিবন্ধিত।


application/json একটি অ্যারে বা বস্তু তথ্য সংরক্ষণ করতে পিএইচপি মহান কাজ করে।

আমি এই কোডটি Google ক্লাউড স্টোরেজ (GCS) এ JSON তে ডেটা রাখার জন্য ব্যবহার করি যা প্রকাশ্যে দৃশ্যমান হয় :

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

JSP , আপনি এই পৃষ্ঠা নির্দেশাবলী ব্যবহার করতে পারেন:

<%@ page language="java" contentType="application/json; charset=UTF-8"
    pageEncoding="UTF-8"%>

JSON এর জন্য সঠিক MIME মিডিয়া টাইপ application/json । JSP ক্লায়েন্ট একটি প্রতিক্রিয়া পাঠানোর জন্য এটি ব্যবহার করবে।





content-type