Loại nội dung JSON chính xác là gì?


10255

Tôi đã loay hoay với JSON một thời gian, chỉ đẩy nó ra dưới dạng văn bản và nó không làm tổn thương bất kỳ ai (mà tôi biết), nhưng tôi muốn bắt đầu làm mọi thứ đúng cách.

Tôi đã thấy như vậy nhiều "tiêu chuẩn" có mục đích cho loại nội dung JSON:

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

Nhưng cái nào đúng, hay nhất? Tôi tập hợp rằng có những vấn đề hỗ trợ trình duyệt và bảo mật khác nhau giữa chúng.

Tôi biết có một câu hỏi tương tự, Loại MIME nào nếu JSON được trả về bởi API REST? , nhưng tôi muốn một câu trả lời được nhắm mục tiêu hơn một chút.

Câu trả lời:


10310

Đối với văn bản JSON:

application/json

Loại phương tiện MIME cho văn bản JSON là application/json. Mã hóa mặc định là UTF-8. (Nguồn: RFC 4627 ).

Đối với JSONP (javascript có thể chạy) với hàm gọi lại:

application/javascript

Dưới đây là một số bài viết trên blog đã được đề cập trong các ý kiến ​​có liên quan.



Tôi có thể gửi tập tin cùng nhau văn bản Json không?
OPV

7
Internet Explorer đôi khi có vấn đề với ứng dụng / json - blog đang ngoại tuyến
kudlatiger

6
Hãy tưởng tượng tôi có một tài liệu được viết bởi ai đó có chứa văn bản đơn giản. Bây giờ văn bản đơn giản cũng chỉ là JSON hợp lệ. Sau đó tôi có thể sai khi sử dụng văn bản / thuần túy như kiểu mime của nó không? JSON là một SUB-TYPE của văn bản. Vì vậy, tôi nghĩ rằng cả hai nên được cho phép. Câu hỏi là cái nào hoạt động tốt hơn trong thực tế. Theo nhận xét của codetoshare IE có vấn đề với application / json. Nhưng không có trình duyệt nên có vấn đề với văn bản / đơn giản. Nếu văn bản / thuần túy không an toàn thì làm cách nào tôi có thể phân phát tệp văn bản từ trang web của mình?
Panu Logic

5
@EugenMihailescu Tiêu đề của trang đó là "Danh sách không đầy đủ các loại MIME"
Brilliantastick

1617

IANA đã đăng ký Loại MIME chính thức cho JSON như application/json.

Khi được hỏi về lý do tại sao không text/json, Crockford dường như đã nói JSON không thực sự là JavaScript cũng không phải là văn bản và IANA cũng có nhiều khả năng ra tay application/*hơn text/*.

Nhiêu tai nguyên hơn:


166
Rất nhiều thứ đã được đưa vào text/*phần trong những ngày đầu có lẽ sẽ được đưa vào application/*phần này những ngày này.
TRiG

29
@Rohmer - Bạn "có thể" mở bất cứ thứ gì trong trình soạn thảo văn bản, nhưng định dạng nhị phân như JPEG hoặc Windows .exe hoặc .zip sẽ chứa các ký tự không in được, thực sự có thể phá vỡ nhiều trình soạn thảo văn bản hoặc gây ra hành vi không mong muốn. Hãy thử chạy cat file.jpgchẳng hạn. Trong khi đó bất kỳ tệp xml hoặc json đều có thể in 100%. Vì vậy, tôi nghĩ rằng quan điểm của Stijn de Witt là hợp lệ, mặc dù thực tế là có, đã quá muộn để thay đổi.
XP84

4
@ XP84 Bạn có thể mở bất kỳ nhị phân nào bằng trình soạn thảo văn bản ở dạng HEX. Và tất cả các ký tự khác nhau (16 trong số chúng) có thể in 100%. Vì vậy, theo logic đó ... tất cả đều là văn bản nhị phân? Json không phải là văn bản. Json là (cảnh báo: định nghĩa lỏng lẻo phía trước) một biểu diễn văn bản của một đối tượng (hoặc mảng các đối tượng)
xDaizu

5
Không có nghĩa đối với cụm từ "trình soạn thảo văn bản ở dạng HEX". Trình soạn thảo Hex hiển thị mỗi byte là giá trị thập lục phân của nó, ví dụ, byte 1111000 là "78". Mặc dù có thể có một số trình soạn thảo văn bản cũng có chế độ chỉnh sửa hex, nhưng điều này không phổ biến cũng không hữu ích cho bất cứ điều gì ngoại trừ những người dùng kỹ thuật nhất thực hiện các tác vụ kỹ thuật nhất. Văn bản, bằng cách so sánh, có nghĩa là ASCII hoặc Unicode, và trong văn bản, byte 1111000 có nghĩa là xký tự chữ thường. Không phải 78. JSON là văn bản theo cách chính xác giống như HTML (văn bản / html). Nó chỉ chứa các ký tự văn bản có thể đọc được, với ý nghĩa cấu trúc trong đó.
XP84

11
Tôi có xu hướng đồng ý với Stijn de Witt. JSON có nghĩa là được xem và chỉnh sửa bằng trình soạn thảo văn bản.
Panu Logic

891

Đối với JSON:

Content-Type: application/json

Đối với JSON-P :

Content-Type: application/javascript

62
JSONP thực sự không phải là JSON, đó là một kỹ thuật để truyền một đối tượng JavaScript theo nghĩa đen
Benjamin Gruenbaum

632

Tất nhiên, loại phương tiện MIME chính xác cho JSON là application/json , nhưng cần phải nhận ra loại dữ liệu nào được mong đợi trong ứng dụng của bạn.

Ví dụ, tôi sử dụng Ext GWT và phản hồi của máy chủ phải ở dạng văn bản / html nhưng chứa dữ liệu JSON.

Phía khách hàng, người nghe biểu mẫu 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");
    }
});

Trong trường hợp sử dụng dụng loại phản hồi ứng dụng / json , trình duyệt đề nghị tôi lưu tệp.

Đoạn mã nguồn phía máy chủ sử dụng Spring 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);
    }
};

7
phản hồi của máy chủ phải đi dưới dạng văn bản / html. Điều này cũng đúng với biến thể ExtJS.
gbegley

463

JSON:

Phản hồi là dữ liệu được tạo động, theo các tham số truy vấn được truyền trong URL.

Thí dụ:

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

Loại nội dung: application/json


JSON-P:

JSON với phần đệm. Phản hồi là dữ liệu JSON, với một lệnh gọi hàm bao quanh nó.

Thí dụ:

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

Loại nội dung: application/javascript


46
Định nghĩa của JSON là sai. Nó không cần phải được tạo động hoặc tôn trọng các tham số truy vấn. Bạn có thể phục vụ một tệp JSON tĩnh. Ngoài ra, câu trả lời được đánh giá cao nhất có liên kết đến RFC.
styfle

10
Ngoài ra JSONP có thể là dữ liệu json được gán cho một var.
Jimmy Kane

401

Nếu bạn đang sử dụng Ubuntu hoặc Debian và bạn phân phát các tệp .json thông qua Apache, bạn có thể muốn phân phát các tệp có loại nội dung chính xác. Tôi đang làm điều này chủ yếu vì tôi muốn sử dụng tiện ích mở rộng JSONView của Firefox

Mô-đun Apache mod_mime sẽ giúp thực hiện điều này một cách dễ dàng. Tuy nhiên, với Ubuntu, bạn cần chỉnh sửa tệp /etc/mime.types và thêm dòng

application/json json

Sau đó khởi động lại Apache:

sudo service apache2 restart

44
thường thì tải lại là đủ (nhanh hơn khởi động lại). Ngoài ra, lưu ý rằng bây giờ bạn có thể thực hiện "tải lại dịch vụ sudo apache2".
noamtm

19
Ubuntu 12.04 có mặc định này
Prizoff

386

Nếu bạn đang gọi Dịch vụ web ASP.NET từ phía máy khách, bạn phải sử dụng application/jsonđể nó hoạt động. Tôi tin rằng điều này giống với các khung jQueryExt .


20
jQuery dường như hoạt động với ít nhất 'application / json' và 'text / plain' ... Tôi chưa thử tất cả các ứng dụng khác.
Nathan

jQuery là có khả năng làm việc với 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

307

Loại nội dung phù hợp cho JSON là application/jsonKHÔNG GIỚI HẠN bạn đang sử dụng JSONP , còn được gọi là JSON với Padding, thực chất là JavaScript và do đó, loại nội dung phù hợp sẽ là application/javascript.


296

Không có nghi ngờ gì, đó application/jsonlà loại MIME tốt nhất cho phản hồi JSON.

Nhưng tôi đã có một số kinh nghiệm mà tôi phải sử dụng application/x-javascriptvì một số vấn đề về nén. Môi trường lưu trữ của tôi được chia sẻ lưu trữ với GoDaddy . Họ không cho phép tôi thay đổi cấu hình máy chủ. Tôi đã thêm đoạn mã sau vào web.configtập tin của mình để nén phản hồi.

<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"/>

Bằng cách sử dụng này, các trang .aspx đã được nén bằng g-zip nhưng các phản hồi JSON thì không. Tôi đã thêm

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

trong phần loại tĩnh và động. Nhưng điều này hoàn toàn không nén các phản hồi JSON.

Sau đó tôi loại bỏ loại mới được thêm này và thêm

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

trong cả phần loại tĩnh và loại động và đã thay đổi loại phản hồi trong

.ashx (trình xử lý không đồng bộ) để

application/x-javascript

Và bây giờ tôi thấy rằng các phản hồi JSON của tôi đã được nén bằng g-zip. Vì vậy, cá nhân tôi khuyên bạn nên sử dụng

application/x-javascript

chỉ khi bạn muốn nén các phản hồi JSON của mình trên môi trường lưu trữ được chia sẻ . Bởi vì trong lưu trữ được chia sẻ, chúng không cho phép bạn thay đổi cấu hình IIS .


11
"Vì vậy, cá nhân tôi khuyên bạn nên sử dụng application / x-javascript" là nơi câu trả lời này trở nên sai lệch. GoDaddy không cho phép nén application/json, tôi tận dụng nó trên lưu trữ được chia sẻ của mình và tôi sẽ không đề xuất sử dụng một loại nội dung khác để cho phép nén, dù sao, điều đó đơn giản là sai. Nó có thể được thực hiện, nhưng nó vẫn sẽ sai. Sử dụng các loại nội dung khác nhau để hỗ trợ trình duyệt là một điều, sử dụng các loại nội dung khác nhau để nén phía máy chủ là một điều khác.

269

Chỉ khi sử dụng application/jsonlàm loại MIME, tôi mới có các tính năng sau (kể từ tháng 11 năm 2011 với các phiên bản Chrome mới nhất, Firefox với Fireorms ):

  • Không còn cảnh báo nào từ Chrome khi JSON được tải từ máy chủ.
  • Fireorms sẽ thêm một tab vào phản hồi hiển thị cho bạn dữ liệu JSON được định dạng. Nếu loại MIME khác, nó sẽ chỉ hiển thị dưới dạng 'Nội dung phản hồi'.

244

Không phải tất cả mọi thứ hoạt động cho loại nội dung application/json.

Nếu bạn đang sử dụng Ext JS biểu mẫu gửi lên tệp tải lên, hãy lưu ý rằng phản hồi của máy chủ được trình duyệt phân tích cú pháp để tạo tài liệu cho <iframe>.

Nếu máy chủ đang sử dụng JSON để gửi đối tượng trả về, thì Content-Type tiêu đề phải được đặt thànhtext/html để báo cho trình duyệt chèn văn bản không thay đổi vào thân tài liệu.

Xem tài liệu API Ext JS 3.4.0 .


40
Các công cụ không tuân thủ các tiêu chuẩn nên được tránh bất cứ khi nào có thể; sử dụng application/jsoncho mỗi thông số kỹ thuật.
one.beat.consumer

15
@ one.beat.consumer trong khi đó là sự thật, nó không cụ thể cho ExtJs mỗi se. Đó là một giới hạn trình duyệt (hay đúng hơn, có lẽ là "biện pháp bảo mật").
Hendy I Girls

7
Chắc chắn sẽ tốt hơn nếu sử dụng văn bản / thuần túy để nó không áp dụng bất kỳ ngữ nghĩa HTML nào cho nội dung không phải HTML? Hoặc các trình duyệt không cho phép bạn trích xuất nội dung của khung nếu nó không có DOM?
Synchro

5
Để thêm sự nhầm lẫn hơn nữa: Tôi chỉ gỡ một trường hợp tương tự như trên Samsung Galaxy Beam (Android 2.3) với trình duyệt mặc định, và iframedường như lửa loadsự kiện cho application/javascript, application/x-javascript, text/javascript, text/plain, nhưng KHÔNG bắn nó cho application/jsonhay text/html. Tính đến hôm nay, Android <= 2.3 chiếm khoảng 50% thị phần Android.
jakub.g

226

JSON là ngôn ngữ dành riêng cho tên miền (DSL) và định dạng dữ liệu độc lập với JavaScript và do đó có loại MIME riêng , application/json. Tất nhiên, việc tôn trọng các loại MIME được điều khiển bởi máy khách, do đó text/plaincó thể thực hiện chuyển byte, nhưng sau đó bạn sẽ đẩy mạnh việc giải thích sang miền ứng dụng của nhà cung cấp một cách không cần thiết - application/json. Bạn có chuyển XML qua khôngtext/plain không?

Nhưng thành thật mà nói, sự lựa chọn loại MIME của bạn là lời khuyên cho khách hàng về cách diễn giải dữ liệu - text/plainhoặctext/HTML (khi đó không phải là HTML) giống như kiểu xóa - nó không chính xác như làm cho tất cả các đối tượng thuộc loại Object của bạn bằng ngôn ngữ được nhập.

Không có thời gian chạy trình duyệt mà tôi biết sẽ lấy tài liệu JSON và tự động cung cấp nó cho thời gian chạy dưới dạng đối tượng có thể truy cập JavaScript mà không cần can thiệp, nhưng nếu bạn đang làm việc với máy khách bị tê liệt thì đó là một vấn đề hoàn toàn khác. Nhưng đó không phải là toàn bộ câu chuyện- Các dịch vụ JSON của RESTful thường không có thời gian chạy JavaScript, nhưng nó không ngăn họ sử dụng JSON làm định dạng trao đổi dữ liệu khả thi. Nếu các máy khách bị tê liệt ... thì tôi sẽ xem xét có thể tiêm HTML qua Ajax dịch vụ tạo khuôn mẫu thay thế.

Ứng dụng / JSON!


210

Nếu bạn đang ở trong môi trường phía máy khách, việc điều tra về hỗ trợ trình duyệt chéo là bắt buộc đối với một ứng dụng web được hỗ trợ tốt.

Kiểu nội dung HTTP phù hợp sẽ là application/json, vì những người khác cũng đã nêu bật, nhưng một số khách hàng không xử lý nó tốt, đó là lý do tại sao jQuery khuyến nghị mặc định text/html.


170

Đáp án đúng là:

Content-Type: application/json

166

Như nhiều người khác đã đề cập, application/json là câu trả lời chính xác.

Nhưng điều chưa được giải thích là những lựa chọn khác mà bạn đề xuất có ý nghĩa gì.

  • application/x-javascript: Loại MIME thử nghiệm cho JavaScript trước đây application/javascriptđã được tạo chuẩn.

  • text/javascript: Bây giờ đã lỗi thời. Bạn nên sử dụng application/javascriptkhi sử dụng javascript.

  • text/x-javascript: Loại MIME thử nghiệm cho tình huống trên.

  • text/x-json: Loại MIME thử nghiệm cho JSON trước khi application/jsonđược đăng ký chính thức.

Nói chung, bất cứ khi nào bạn có bất kỳ nghi ngờ nào về các loại nội dung, bạn nên kiểm tra liên kết này


15
Khi nào đã text/javascripttrở nên lỗi thời? Tôi vẫn đang lấp đầy các tài liệu HTML bằng <script type="text/javascript" ...các thẻ.
Oli

7
Nó làm cho không có sự khác biệt cho các trình duyệt, thực sự. Nó chỉ lỗi thời đối với các tiêu chuẩn RFC: rfc-editor.org/rfc/rfc4329.txt
fcm

16
@Oli bạn có thể thả một cách an toàn type="text/javascript"và chỉ cần thực hiện <script>...</script>ít nhất theo HTML5.
TCB13

149

Trong JSP , bạn có thể sử dụng điều này trong chỉ thị trang:

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

Loại phương tiện MIME chính xác cho JSON là application/json. JSP sẽ sử dụng nó để gửi phản hồi cho khách hàng.


115

application/json” Là đúng JSON loại nội dung.

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

112

Việc đăng ký IANA choapplication/json biết

Các ứng dụng sử dụng loại phương tiện này: JSON đã được sử dụng để trao đổi dữ liệu giữa các ứng dụng được viết bằng tất cả các ngôn ngữ lập trình sau: ActionScript, C, C #, Clojure, ColdFusion, Common Lisp, E, Erlang, Go, Java, JavaScript, Lua, Objective CAML, Perl, PHP, Python, Rebol, Ruby, Scala và Scheme.

Bạn sẽ nhận thấy rằng IANA.org không liệt kê bất kỳ loại phương tiện nào khác , trên thực tế thậm chí application/javascripthiện đã lỗi thời. Vì vậy, application/jsonthực sự là chỉ có thể đúng câu trả lời .

Hỗ trợ trình duyệt là một điều khác.

Các loại phương tiện truyền thông phi tiêu chuẩn được hỗ trợ rộng rãi nhất là text/jsonhoặc text/javascript. Nhưng một số tên tuổi lớn thậm chí sử dụng text/plain.

Điều kỳ lạ hơn nữa là tiêu đề Kiểu nội dung được gửi bởi Flickr, người trả về JSON dưới dạng text/xml. Google sử dụng text/javascriptcho một số apis ajax.

Ví dụ:

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

Đầu ra: Content-Type: text/javascript

curl -I "https://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=f82254c1491d894f1204d8408f645a93"

Đầu ra: Content-Type: text/xml


90

Loại MIME đúng là application/json

NHƯNG

Tôi đã trải qua nhiều tình huống mà loại trình duyệt hoặc người dùng khung cần thiết:

text/html

application/javascript

10
Ví dụ về tình huống như vậy?
Đánh dấu Amery

75

Tôi sử dụng dưới đây

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

66

Các Content-Gõ tiêu đề phải được thiết lập để ' application / json ' khi gửi bài. Máy chủ lắng nghe yêu cầu nên bao gồm " Chấp nhận = ứng dụng / json ". Trong Spring MVC bạn có thể làm như thế này:

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

Thêm tiêu đề để trả lời:

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");


59

Các application/jsoncông trình tuyệt vời trong PHP để lưu trữ một mảng hoặc dữ liệu đối tượng.

Tôi sử dụng mã này để đưa dữ liệu vào JSON trên Google Cloud Storage (GCS) được đặt công khai có thể xem được :

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

Để lấy lại dữ liệu là thẳng về phía trước:

$data = json_decode(file_get_contents("gs://BUCKETNAME/FILENAME.json"));

50

Nếu JSON là với phần đệm thì nó sẽ như vậy application/jsonp. Nếu JSON không có phần đệm thì nó sẽ như vậy application/json.

Để đối phó với cả hai, đó là một cách thực hành tốt để sử dụng: 'application / javascript' mà không bận tâm đến việc đó là với phần đệm hay không có phần đệm.


8
Phần đầu tiên của câu trả lời của bạn là sai. "application / jsonp" không phải là loại MIME hợp lệ. Phần thân phản hồi của JSONP chỉ là JavaScript, do đó, một trong các loại MIME cho JavaScript phải được sử dụng.
Rob W


43

Mở rộng các phản hồi được chấp nhận, khi bạn đang sử dụng JSON trong ngữ cảnh REST ...

Có một lập luận mạnh mẽ về việc sử dụng application/x-resource+jsonapplication/x-collection+jsonkhi bạn đại diện cho các tài nguyên và bộ sưu tập REST.

Và nếu bạn quyết định làm theo đặc tả jsonapi , bạn nên sử dụng application/vnd.api+json, vì nó được ghi lại.

Rõ ràng không có một tiêu chuẩn chung, rõ ràng là ngữ nghĩa được thêm vào các tài nguyên được chuyển giao biện minh cho Loại Nội dung rõ ràng hơn là chỉapplication/json .

Theo lý do này, các bối cảnh khác có thể biện minh cho Loại Nội dung cụ thể hơn .


3
application/vnd.api+jsondường như đặc biệt dành cho apis sử dụng json: api , một đặc tả rất hẹp với các kỳ vọng và định dạng riêng của nó, tôi không hiểu nó dành cho bất kỳ API nào trả về json. Xin hãy sửa tôi nếu tôi sai
Hilikus

42

Các nhà phát triển PHP sử dụng điều này:

<?php
    header("Content-type: application/json");

    // Do something here...
?>

39

Nếu bạn nhận được dữ liệu từ API REST trong JSON, do đó bạn phải sử dụng loại nội dung

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

28

Content-Type: application/json- json
Content-Type: application/javascript- json-P
Content-Type: application/x-javascript- javascript
Content-Type: text/javascript- javascript NHƯNG đã lỗi thời, các phiên bản IE cũ hơn được sử dụng làm thuộc tính html.
Content-Type: text/x-javascript- Các loại phương tiện JavaScript NHƯNG lỗi thời
Content-Type: text/x-json- json trước khi ứng dụng / json được đăng ký chính thức.


Đối với văn bản JSON: application / json Loại nội dung: application / json
Vikash Chauhan

28

Các định dạng JSON (Ký hiệu đối tượng JavaScript) và JSONP ("JSON với phần đệm") dường như rất giống nhau và do đó có thể rất khó hiểu loại MIME nào họ nên sử dụng. Mặc dù các định dạng tương tự nhau, có một số khác biệt tinh tế giữa chúng.

Vì vậy, bất cứ khi nào trong bất kỳ nghi ngờ nào, tôi có một cách tiếp cận rất đơn giản (hoạt động hoàn toàn tốt trong hầu hết các trường hợp), cụ thể là, đi và kiểm tra tài liệu RFC tương ứng.

JSON RFC 4627 (Loại phương tiện / ứng dụng json cho Ký hiệu đối tượng JavaScript (JSON)) là thông số kỹ thuật của định dạng JSON. Nó nói trong phần 6, loại phương tiện MIME cho văn bản JSON là

application/json.

JSONP JSONP ("JSON with padding") được xử lý theo cách khác với JSON, trong một trình duyệt. JSONP được coi là một tập lệnh JavaScript thông thường và do đó, nó nên sử dụng application/javascript,loại MIME chính thức hiện tại cho JavaScript. Tuy nhiên, trong nhiều trường hợp, text/javascriptloại MIME cũng sẽ hoạt động tốt.

Lưu ý rằng text/javascriptđã được đánh dấu là lỗi thời bởi tài liệu RFC 4329 (Loại phương tiện tập lệnh) và nên sử dụng application/javascriptloại thay thế. Tuy nhiên, vì lý do di sản, text/javascriptvẫn được sử dụng rộng rãi và nó có hỗ trợ nhiều trình duyệt (điều này không phải lúc nào cũng đúng với application/javascriptloại MIME, đặc biệt là với các trình duyệt cũ hơn).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.