11373 Stimmen

Was ist der richtige JSON-Inhaltstyp?

Ich habe herumgespielt mit JSON Ich habe eine Zeit lang nur als Text gepusht, und es hat niemandem geschadet (soweit ich weiß), aber ich würde gerne anfangen, die Dinge richtig zu machen.

Ich habe gesehen also viele vermeintliche "Standards" für den Inhaltstyp JSON:

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

Aber welche ist die richtige oder die beste? Ich vermute, dass es unterschiedliche Sicherheits- und Browserunterstützungsprobleme gibt.

Ich weiß, dass es eine ähnliche Frage gibt, Welcher MIME-Typ, wenn JSON von einer REST-API zurückgegeben wird? aber ich hätte gern eine etwas gezieltere Antwort.

162voto

raja Punkte 2343

Unter JSP können Sie diese in der Seitenrichtlinie verwenden:

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

Die richtige MIME Medientyp für JSON ist application/json . JSP wird es für das Senden einer Antwort an den Client verwenden.

125voto

Sukane Punkte 2532

" application/json " ist der richtige JSON-Inhaltstyp.

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

124voto

があります。 IANA-Registrierung für application/json sagt

Anwendungen, die diesen Medientyp verwenden: JSON wurde verwendet, um Daten zwischen Anwendungen auszutauschen, die in einer der folgenden Programmiersprachen geschrieben wurden: ActionScript, C, C#, Clojure, ColdFusion, Common Lisp, E, Erlang, Go, Java, JavaScript, Lua, Objective CAML, Perl, PHP, Python, Rebol, Ruby, Scala und Scheme.

Sie werden feststellen, dass IANA.org listet keine dieser anderen Medientypen auf in der Tat sogar application/javascript ist nun überholt. Also application/json ist wirklich die einzig mögliche richtig Antwort.

Die Browserunterstützung ist eine andere Sache.

Die am meisten unterstützten Nicht-Standard-Medientypen sind text/json o text/javascript . Aber einige große Namen verwenden sogar text/plain .

Noch merkwürdiger ist der Content-Type-Header, der von Flickr gesendet wird, das JSON als text/xml . Google verwendet text/javascript für einige seiner Ajax-Apis.

Beispiele:

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

Sortie : Content-Type: text/javascript

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

Sortie : Content-Type: text/xml

96voto

LombaX Punkte 17077

Der richtige MIME-Typ ist application/json

BUT

Ich habe viele Situationen erlebt, in denen der Browser-Typ oder der Rahmen Benutzer benötigt:

text/html

application/javascript

10 Stimmen

Ein Beispiel für eine solche Situation?

80voto

Andro Punkte 875

Ich verwende die folgenden

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X