我一直在弄亂JSON一段時間,只是將它作為文本推出,它並沒有傷害任何人(據我所知),但是我想正確地開始做事。 我已經看到許多所謂的JSON內容類型的“標準”: 應用程序/ json 應用程序/ x-javascript 文字/ javascript 文字/ x-javascript 文字/ x-json 但是,哪一個是正確的,還是最好的?我發現在它們之間存在安全性和瀏覽器支持問題。 我知道有一個類似的問題,如果REST API返回JSON,則為哪種MIME類型?但是我想要一個更有針對性的答案。
1個 2 下一個 對於JSON文本: 應用程序/ json JSON文本的MIME媒體類型為application / json。默認編碼為UTF-8。 (來源:RFC 4627)。 對於帶回調的JSONP(可運行的JavaScript): 應用程序/ javascript 以下是相關評論中提到的一些博客文章: 為什麼不應該將text / html用於JSON Internet Explorer有時與application / json有關 相當完整的Mimetype列表及其用途 來自@gnrfan的IANA上的官方MIME類型列表 | IANA已將JSON的官方MIME類型註冊為application / json。 當被問及為什麼不是text / json時,Crockford似乎說JSON並不是JavaScript也不是文本,而且IANA比text / *更可能分發application / *。 更多資源: 媒體類型 請求評論4627 bluesmoon:JSON具有一種類型 | 對於JSON: 內容類型:application / json 對於JSON-P: 內容類型:應用程序/ JavaScript | 當然,JSON的正確MIME媒體類型是application / json,但是有必要了解應用程序中期望的數據類型。 例如,我使用Ext GWT,並且服務器響應必須為text / html,但包含JSON數據。 客戶端,Ext GWT表單偵聽器 uploadForm.getForm()。addListener(new FormListenerAdapter() { @Override 公共無效onActionFailed(表單,int httpStatus,字符串responseText) { MessageBox.alert(“ Error”); } @Override 公共無效onActionComplete(表單,int httpStatus,字符串responseText) { MessageBox.alert(“成功”); } }); 如果使用application / json響應類型,瀏覽器建議我保存文件。 使用Spring MVC的服務器端源代碼片段 返回新的AbstractUrlBasedView() { @SuppressWarnings(“未選中”) @Override 受保護的void renderMergedOutputModel(地圖模型,HttpServletRequest請求, HttpServletResponse響應)引發異常 { response.setContentType(“ text / html”); response.getWriter()。write(json); } }; | JSON: 響應是根據URL中傳遞的查詢參數動態生成的數據。 例: {“ Name”:“ Foo”,“ Id”:1234,“ Rank”:7} 內容類型:application / json JSON-P: 帶有填充的JSON。 響應是JSON數據,並包裝了一個函數調用。 例: functionCall({“ Name”:“ Foo”,“ Id”:1234,“ Rank”:7})); 內容類型:應用程序/ JavaScript | 如果您使用的是Ubuntu或Debian,並且通過Apache提供.json文件,則可能需要提供具有正確內容類型的文件。我這樣做主要是因為我想使用Firefox擴展JSONView Apache模塊mod_mime將幫助您輕鬆完成此任務。但是,在Ubuntu中,您需要編輯文件/etc/mime.types並添加以下行 application / json json 然後重新啟動Apache: sudo服務apache2重新啟動 | 如果要從客戶端調用ASP.NET Web服務,則必須使用application / json使其正常工作。我相信這對於jQuery和Ext框架是相同的。 | JSON的正確內容類型是application / json,除非您使用的是JSONP,也稱為JSON with Padding,它實際上是JavaScript,因此正確的內容類型將是application / javascript。 | 毫無疑問,application / json是JSON響應的最佳MIME類型。 但是由於一些壓縮問題,我有一些必須使用application / x-javascript的經驗。我的託管環境是與GoDaddy共享的託管。它們不允許我更改服務器配置。我已將以下代碼添加到我的web.config文件中以壓縮響應。dynamicTypes> staticTypes> httpCompression> 通過使用此選項,.aspx頁使用g-zip壓縮,但JSON響應未壓縮。我加了 在靜態和動態類型部分中。但這根本不會壓縮JSON響應。 之後,我刪除了這個新添加的類型並添加了 在靜態和動態類型部分中,並更改了響應類型 .ashx(異步處理程序) 應用程序/ x-javascript 現在,我發現我的JSON響應已使用g-zip壓縮。所以我個人建議使用 應用程序/ x-javascript 僅當您要在共享託管環境上壓縮JSON響應時。因為在共享主機中,它們不允許您更改IIS配置。 | 僅當使用application / json作為MIME類型時,我才具有以下內容(截至2011年11月,使用最新版本的Chrome,帶有Firebug的Firefox): 從服務器加載JSON後,Chrome將不再發出警告。 Firebug將在響應中添加一個標籤,向您顯示JSON數據 格式化。如果MIME類型不同,它將顯示為 “響應內容”。 | 並非所有內容都適用於內容類型application / json。 如果您使用Ext JS表單提交來上傳文件,請注意瀏覽器會解析服務器響應以為