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.

54voto

Ankit Zalani Punkte 3018

Wenn die JSON ist mit Padding dann wird es sein application/jsonp . Wenn das JSON ohne Füllung ist, wird es zu application/json .

Um beides zu bewältigen, ist es eine gute Praxis, zu verwenden: application/javascript' zu verwenden, ohne sich darum zu kümmern, ob es sich um eine gepolsterte oder ungepolsterte Version handelt.

9 Stimmen

Der erste Teil Ihrer Antwort ist falsch. "application/jsonp" ist kein gültiger MIME-Typ. Der Antwortkörper eines JSONP ist nur JavaScript, daher muss einer der MIME-Typen für JavaScript verwendet werden.

50voto

jgomo3 Punkte 1055

Erweitern der akzeptierten Antworten, wenn Sie JSON in einem REST-Kontext verwenden...

Es gibt eine starkes Argument über die Verwendung application/x-resource+json y application/x-collection+json wenn Sie REST-Ressourcen und -Sammlungen darstellen.

Und wenn Sie sich entscheiden, dem jsonapi Spezifikation, sollten Sie Verwendung von application/vnd.api+json wie es dokumentiert ist.

Auch wenn es keinen allgemeingültigen Standard gibt, ist es klar, dass die zusätzliche Semantik der übertragenen Ressourcen eine explizitere Inhalt-Typ als nur application/json .

Dieser Argumentation folgend könnten andere Kontexte eine spezifischere Regelung rechtfertigen Inhalt-Typ .

3 Stimmen

application/vnd.api+json scheint speziell für Apis zu sein, die json:api eine sehr eng gefasste Spezifikation mit eigenen Erwartungen und eigenem Format, die meines Erachtens nicht geeignet ist für jede API, die json zurückgibt. Bitte korrigieren Sie mich, wenn ich falsch liege

49voto

Krishna Punkte 853

Wenn Sie Daten von REST API in JSON erhalten, müssen Sie Inhalt-Typ :

  • Für JSON-Daten: Inhalt-Typ:anwendung/json
  • Für HTML-Daten: Inhalt-Typ:text/html ,
  • Für XHTML-Daten: Inhalt-Typ:application/xhtml+xml ,
  • Für XML-Daten: Inhalt-Typ:text/xml, Anwendung/xml

48voto

PHP-Entwickler verwenden dies:

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

    // Do something here...
?>

36voto

Iresha Rubasinghe Punkte 833

JSON (JavaScript Object Notation) und JSONP ("JSON with padding") sehr ähnlich zu sein scheinen und es daher sehr verwirrend sein kann, welchen MIME-Typ sie verwenden sollten. Obwohl die Formate ähnlich sind, gibt es einige feine Unterschiede zwischen ihnen.

Im Zweifelsfall habe ich also einen sehr einfachen Ansatz (der in den meisten Fällen gut funktioniert), nämlich das entsprechende RFC-Dokument zu prüfen.

JSON RFC 4627 (The application/json Media Type for JavaScript Object Notation (JSON)) ist eine Spezifikation des JSON-Formats. Sie besagt in Abschnitt 6, dass der MIME-Medientyp für JSON-Text

application/json.

JSONP JSONP ("JSON with padding") wird in einem Browser anders behandelt als JSON. JSONP wird wie ein reguläres JavaScript-Skript behandelt und sollte daher mit application/javascript, der derzeitige offizielle MIME-Typ für JavaScript. In vielen Fällen jedoch, text/javascript Der MIME-Typ ist ebenfalls geeignet.

Beachten Sie, dass text/javascript wurde als veraltet gekennzeichnet durch RFC 4329 (Scripting Media Types) und es wird empfohlen, die application/javascript Typ stattdessen. Aus Gründen der Vererbung, text/javascript ist immer noch weit verbreitet und wird von allen Browsern unterstützt (was nicht immer der Fall ist bei application/javascript MIME-Typ, insbesondere bei älteren Browsern).

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