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.

432voto

Gourneau Punkte 12240

Wenn Sie Ubuntu oder Debian verwenden und .json-Dateien über Apache bereitstellen, sollten Sie die Dateien mit dem richtigen Inhaltstyp bereitstellen. Ich tue dies in erster Linie, weil ich die Firefox-Erweiterung verwenden möchte JSONView

Das Apache-Modul mod_mime hilft dabei, dies einfach zu tun. Unter Ubuntu müssen Sie jedoch die Datei /etc/mime.types und fügen Sie die Zeile

application/json json

Starten Sie dann den Apache neu:

sudo service apache2 restart

46 Stimmen

In der Regel reicht ein Neuladen aus (schneller als ein Neustart). Beachten Sie auch, dass Sie jetzt "sudo service apache2 reload" ausführen können.

20 Stimmen

Ubuntu 12.04 hat dies standardmäßig

410voto

Mark Clancy Punkte 7621

Wenn Sie ASP.NET Web Services von der Client-Seite aus aufrufen, müssen Sie application/json damit es funktioniert. Ich glaube, das gilt auch für die jQuery y Ext. Rahmenwerke.

20 Stimmen

JQuery scheint zumindest mit 'application/json' und 'text/plain' zu funktionieren... Ich habe nicht versucht, alle anderen aber.

0 Stimmen

JQuery ist in der Lage, mit folgenden Elementen zu arbeiten content-Type: text/plain , content-Type: application/json , content-Type: application/json; charset=UTF-8 , contentType: "application/x-www-form-urlencoded; charset=UTF-8"

327voto

Resist Design Punkte 4272

Der richtige Inhaltstyp für JSON ist application/json AUSSER Sie verwenden JSONP , auch bekannt als JSON with Padding, was eigentlich JavaScript ist und somit der richtige Inhaltstyp wäre application/javascript .

318voto

shashwat Punkte 7465

Es besteht kein Zweifel, dass application/json ist die beste MIME Typ für eine JSON-Antwort.

Aber ich hatte einige Erfahrungen, bei denen ich die application/x-javascript wegen einiger Komprimierungsprobleme. Meine Hosting-Umgebung ist Shared Hosting mit GoDaddy . Sie erlauben es mir nicht, die Serverkonfigurationen zu ändern. Ich hatte den folgenden Code zu meinem web.config Datei zur Komprimierung von Antworten.

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

Auf diese Weise wurden die .aspx-Seiten mit g-zip komprimiert, die JSON-Antworten jedoch nicht. Ich fügte hinzu

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

in den Abschnitten über statische und dynamische Typen. Aber dies komprimiert JSON-Antworten überhaupt nicht.

Danach entfernte ich diesen neu hinzugefügten Typ und fügte

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

sowohl in den Abschnitten für statische als auch für dynamische Typen und änderte den Antworttyp in

.ashx (asynchroner Handler) zu

application/x-javascript

Und jetzt habe ich festgestellt, dass meine JSON-Antworten mit g-zip komprimiert wurden. Ich persönlich empfehle daher die Verwendung von

application/x-javascript

nur, wenn Sie Ihre JSON-Antworten auf einem Shared-Hosting-Umgebung . Weil Sie beim Shared Hosting nicht die Möglichkeit haben, die IIS Konfigurationen.

14 Stimmen

"Deshalb empfehle ich persönlich die Verwendung von application/x-javascript", denn diese Antwort ist irreführend. GoDaddy tut ermöglichen die Kompression von application/json Ich nutze es auf meinem Shared Hosting und würde nicht empfehlen, einen anderen Inhaltstyp zu verwenden, um die Komprimierung zu aktivieren, das ist einfach falsch. Es kann getan werden, aber es wird immer noch falsch sein. Die Verwendung unterschiedlicher Inhaltstypen für Browserunterstützung ist eine Sache, die Verwendung verschiedener Inhaltstypen für die serverseitige Komprimierung eine andere.

280voto

Ivo Limmen Punkte 3013

Nur bei Verwendung von application/json als die MIME Typ habe ich die folgenden (Stand November 2011 mit den neuesten Versionen von Chrome, Firefox mit Firebug ):

  • Keine Warnungen mehr von Chrome, wenn das JSON vom Server geladen wird.
  • Firebug fügt der Antwort eine Registerkarte hinzu, in der die JSON-Daten angezeigt werden formatiert. Wenn der MIME-Typ anders ist, wird er einfach als Antwort-Inhalt'.

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