Wie kann ich IE überzeugen, einfach application/json anzuzeigen, anstatt anzubieten, es herunterzuladen?

Lesezeit: 8 Minuten

Wie kann ich IE uberzeugen einfach applicationjson anzuzeigen anstatt anzubieten
Käse

Beim Debuggen von jQuery-Apps, die AJAX verwenden, muss ich häufig den JSON sehen, der vom Dienst an den Browser zurückgegeben wird. Also füge ich die URL für die JSON-Daten in die Adressleiste ein.

Das ist bei ASPNET schön, weil ich im Falle eines Codierungsfehlers die ASPNET-Diagnose im Browser sehen kann:

Alt-Text

Aber wenn der serverseitige Code korrekt funktioniert und tatsächlich JSON zurückgibt, fordert mich IE auf, ihn herunterzuladen, sodass ich die Antwort nicht sehen kann.

Alt-Text

Kann ich den IE dazu bringen, das NICHT zu tun, mit anderen Worten, es einfach so anzuzeigen, als wäre es reiner Text?

Ich weiß, dass ich dies tun könnte, wenn ich den Content-Type-Header auf be setze text/plain.

Dies ist jedoch speziell der Kontext einer ASPNET MVC-App, die die Antwort automatisch festlegt, wenn ich JsonResult für eine meiner Aktionsmethoden verwende. Außerdem möchte ich irgendwie den entsprechenden Inhaltstyp beibehalten und ihn nicht ändern, nur um Debugging-Bemühungen zu unterstützen.

  • Firefox 3/4 tut dies auch, wenn Sie einen Computer haben, der nicht aktualisiert wurde.

    – Chris S

    27. Januar 12 um 11:24 Uhr

  • Ich mag die Verwendung von “überzeugen”!!

    – adardesign

    27. Februar 13 um 17:11 Uhr

Wie kann ich IE uberzeugen einfach applicationjson anzuzeigen anstatt anzubieten
Käse

Ich habe die Antwort gefunden.

Sie können IE8 so konfigurieren, dass application/json im Browserfenster angezeigt wird, indem Sie die Registrierung aktualisieren. Es ist kein externes Tool erforderlich. Ich habe das nicht umfassend getestet, aber es funktioniert mit IE8 unter Vista.

Um dies zu verwenden, denken Sie daran, dass alle üblichen Vorbehalte beim Aktualisieren der Registrierung gelten. IE stoppen. Schneiden Sie dann Folgendes aus und fügen Sie es in eine Datei mit dem Namen ein json-ie.reg.

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  

[HKEY_CLASSES_ROOTMIMEDatabaseContent Typeapplication/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOTMIMEDatabaseContent Typetext/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

Doppelklicken Sie dann auf die .reg-Datei. IE neu starten. Das neue Verhalten, das Sie erhalten, wenn Sie eine URL kitzeln, die ein Dokument mit zurückgibt Content-Type: application/json oder Content-Type: text/json ich mag das:

Alt-Text

Was es tut, warum es funktioniert:

Der 25336920-03F9-11cf-8FD0-00AA00686F13 ist die CLSID für die Aktion “Vor Ort durchsuchen”. Im Grunde teilt dieser Registrierungseintrag dem IE mit, dass für Dokumente, die einen Mime-Typ von application/json haben, dieser einfach an Ort und Stelle angezeigt wird. Dies wirkt sich nicht auf Anwendungen/json-Dokumente aus, die über heruntergeladen wurden <script> Tags oder über XHR usw.

Die CLSID- und Codierungsschlüssel erhalten die gleichen Werte wie für image/gif, image/jpegund text/html.

Dieser Hinweis kam von Diese Seiteund aus dem Artikel von Microsoft Umgang mit MIME-Typen im Internet Explorer .


In FF benötigen Sie auch kein externes Add-On. Sie können einfach die verwenden view-source: Pseudo-Protokoll. Geben Sie eine URL wie diese in die Adressleiste ein:

view-source:http://myserver/MyUrl/That/emits/Application/json

Dieses Pseudoprotokoll wurde früher auch im IE unterstützt, bis WinXP-sp2, als Microsoft es aus Sicherheitsgründen deaktivierte.

  • Wenn Sie das Erstellen der Registrierungsdatei überspringen möchten, können Sie hier einen Einzeiler in ein Powershell-Fenster einfügen: reg add "HKEY_CLASSES_ROOTMIMEDatabaseContent Typeapplication/json" /t REG_SZ /d "{25336920-03F9-11cf-8FD0-00AA00686F13}"; reg add "HKEY_CLASSES_ROOTMIMEDatabaseContent Typeapplication/json" /v Encoding /t REG_DWORD /d 0x08000000

    – Jason R. Coombs

    26. Januar 2012 um 19:35 Uhr

  • @nathanvda, es besteht keine Notwendigkeit, den größten Teil der Welt etwas zu fragen. Das Anzeigen von JSON im Browser ist etwas, was ein Entwickler einer AJAX-Seite tun möchte. Für normale Benutzer ist es völlig unnötig, JSON im Browser anzuzeigen.

    – Käse

    23. Juli 2012 um 17:30 Uhr

  • Ich habe den fatalen Fehler gemacht, einem Freund zu erlauben, meine Box auszuleihen, und er hat diesen Fix ausgeführt. Weiß jemand, wie die ursprünglichen Einstellungen sind, damit ich sie rückgängig machen kann?

    – KevDog

    1. Januar 13 um 1:29 Uhr

  • @Mosh, dies wurde oben von nathanvda erwähnt, die Lösung ist nicht so, dass Benutzer der Website den JSON anzeigen können, sondern nur zu Debugging-Zwecken. Lesen Sie die gesamte Frage.

    – Anthony Shaw

    16. Januar 14 um 17:01 Uhr

  • Dies funktioniert immer noch in IE11 unter Win 8.1. Musste nicht einmal den Browser neu starten. In meinem Fall brauchte ich die text/json Schlüssel.

    – Chris

    7. Februar 15 um 23:30 Uhr

1644325990 769 Wie kann ich IE uberzeugen einfach applicationjson anzuzeigen anstatt anzubieten
Fillipe Silva

Ich hatte ein ähnliches Problem. Ich habe die jQuery “$. GetJSON” verwendet und alles hat in Firefox und Chrome perfekt funktioniert.

Aber es funktionierte nicht im IE. Also habe ich versucht, direkt auf die URL von json zuzugreifen, aber im IE wurde gefragt, ob ich die Datei herunterladen möchte.

Nach langem Suchen habe ich gesehen, dass das Ergebnis einen Header mit einem Inhaltstyp enthalten muss, in meinem Fall war der Inhaltstyp:

header("Content-type: text/html; charset=iso-8859-1");

Aber wenn die Seite, die die Anfrage gestellt hat, diesen json erhält, muss im IE derselbe Inhaltstyp angegeben werden, in meinem Fall war es:

$.getJSON (
"<? site_url php echo (" ajax / tipoMenu ")?>"
{contentType: 'text / html; charset = utf-8'},
function (result) {

Umarmungen

  • Dies hat bei mir funktioniert, kein Durcheinander mit der Registrierung erforderlich, ändern Sie einfach den Antwortheader in “text/html”.

    – 64k

    25. März 12 um 6:32 Uhr

  • Wie funktioniert dies in IE7, wenn Sie einen Ajax-Aufruf tätigen und als Ergebnis json erhalten? Ich verwende nicht getJSON, sondern einen .ajax-Aufruf. Ich habe diesen Inhaltstyp in Antwort und Header verwendet und es hilft überhaupt nicht. Weder mit json2.js. Hat jemand erfolgreiche Implementierungen davon, die in IE7 funktionieren? IE7 repräsentiert mehr als 30 % unserer Benutzer. Traurig, aber wahr, und eine Änderung des Registrierungsschlüssels ist keine Option. Einer Million Benutzern in der Regierung zu sagen, dass sie einfach einen Reg-Hack ausführen sollen, wird nicht funktionieren.

    – CD Smith

    30. April 2012 um 23:41 Uhr

  • Ich weiß, dass dies eine alte Frage ist, aber sie wird wiederholt, also hier ist die Antwort: Die ursprüngliche Frage bezieht sich auf ENTWICKLER, die den Abruf von JSON debuggen. Das Ändern der Registrierung wird als Schritt vorgeschlagen, um diesen Entwicklern zu helfen. Das Ändern der Registrierung wird allgemeinen Benutzern nicht empfohlen oder empfohlen. Außerdem: Es besteht NIEMALS die Notwendigkeit, dass normale Benutzer (= eine Million Regierungsbenutzer) JSON im Browser anzeigen.

    – Käse

    17. Januar 14 um 17:36 Uhr

  • Benutz einfach text/plain; charset=UTF-8. Keine Notwendigkeit für Text/HTML.

    – perryflynn

    26. September 16 um 9:28 Uhr

1644325991 165 Wie kann ich IE uberzeugen einfach applicationjson anzuzeigen anstatt anzubieten
Tomasz Maj

Obige Lösung fehlte, und der folgende Code sollte in jeder Situation funktionieren:

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  

[HKEY_CLASSES_ROOTMIMEDatabaseContent Typeapplication/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOTMIMEDatabaseContent Typeapplication/x-json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOTMIMEDatabaseContent Typetext/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

Speichern Sie einfach die Datei json.reg und führen Sie sie aus, um Ihre Registrierung zu ändern.

  • Mein Arbeitscomputer ist gesperrt. Wenn Sie diese über die Befehlszeile hinzufügen müssen, lesen Sie diese Antwort. stackoverflow.com/questions/13809856/… Danke OP. Ich sehe json im IE……..yay!

    – GranadaCoder

    7. September 18 um 13:12 Uhr

1644325991 869 Wie kann ich IE uberzeugen einfach applicationjson anzuzeigen anstatt anzubieten
Benutzer1632922

Das Ändern der JSON-Mimetyp-Einstellungen von IE wirkt sich auf die Art und Weise aus, wie IE behandelt alle JSON-Antworten.

Wenn Sie den Mime-Type-Header in text/html ändern, wird jedem Browser effektiv mitgeteilt, dass die JSON-Antwort, die Sie zurückgeben, kein JSON, sondern einfacher Text ist.

Keine der Optionen ist vorzuziehen.

Stattdessen sollten Sie ein Plugin oder Tool wie den oben erwähnten Fiddler oder einen anderen Network Traffic Inspector-Proxy verwenden, bei dem Sie jedes Mal auswählen können, wie die JSON-Antwort verarbeitet werden soll.

Wenn Sie damit einverstanden sind, dass IE JSON einfach in einem Editor öffnet, können Sie das Standardprogramm Ihres Systems für .json-Dateien in Notepad ändern.

Erstellen oder suchen Sie dazu eine .json-Datei, klicken Sie mit der rechten Maustaste und wählen Sie „Öffnen mit“ oder „Standardprogramm auswählen“.

Dies kann nützlich sein, wenn Sie zufällig den Internet Explorer verwenden möchten, Ihr IT-Unternehmen Ihnen jedoch nicht erlaubt, Ihre Registrierung zu bearbeiten. Ansonsten empfehle ich die obigen Antworten.

1644325991 200 Wie kann ich IE uberzeugen einfach applicationjson anzuzeigen anstatt anzubieten
Chetan S

ich benutze Geiger mit JSONViewer Plugin zum Überprüfen von JSON. Ich glaube nicht, dass es möglich ist, IE dazu zu bringen, sich zu verhalten, ohne vielleicht mit der Registrierung herumzuspielen. Hier ist einige Informationen.

1644325992 742 Wie kann ich IE uberzeugen einfach applicationjson anzuzeigen anstatt anzubieten
Darin Dimitrow

FireFox + FireBug ist für diesen Zweck sehr gut geeignet. Für IE gibt es eine Entwickler-Symbolleiste die ich noch nie verwendet habe und beabsichtige zu verwenden, daher kann ich nicht viel Feedback geben.

  • Ja, ich kenne das FF-Plugin, das die Anzeige von application/json als normalen Text ermöglicht. Ich möchte jedoch speziell etwas über IE wissen.

    – Käse

    20. März 10 um 16:22 Uhr

  • Es gibt eine Entwicklersymbolleiste für IE. Übrigens hier ein schöner Vergleich verschiedener Tools für Entwickler: elegantcode.com/2009/05/18/…

    – Darin Dimitrow

    20. März ’10 um 16:25 Uhr


.

823050cookie-checkWie kann ich IE überzeugen, einfach application/json anzuzeigen, anstatt anzubieten, es herunterzuladen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy