¿Cómo puedo convencer a IE de que simplemente muestre la aplicación/json en lugar de ofrecer descargarlo?

Resuelto Cheeso asked hace 14 años • 9 respuestas

Mientras depuro aplicaciones jQuery que usan AJAX, a menudo tengo la necesidad de ver el json que el servicio devuelve al navegador. Entonces colocaré la URL de los datos JSON en la barra de direcciones.

Esto es bueno con ASPNET porque en caso de un error de codificación, puedo ver el diagnóstico de ASPNET en el navegador:

texto alternativo

Pero cuando el código del lado del servidor funciona correctamente y realmente devuelve JSON, IE me solicita que lo descargue, por lo que no puedo ver la respuesta.

texto alternativo

¿Puedo hacer que IE NO haga eso, en otras palabras, que simplemente lo muestre como si fuera texto sin formato?

Sé que podría hacer esto si configuro el encabezado Content-Type en text/plain.

Pero este es específicamente el contexto de una aplicación ASPNET MVC, que establece la respuesta automáticamente cuando uso JsonResult en uno de mis métodos de acción. También quiero mantener el tipo de contenido apropiado y no cambiarlo solo para respaldar los esfuerzos de depuración.

Cheeso avatar Mar 20 '10 23:03 Cheeso
Aceptado

Encontré la respuesta.

Puede configurar IE8 para mostrar la aplicación/json en la ventana del navegador actualizando el registro. No es necesaria una herramienta externa. No lo he probado ampliamente, pero funciona con IE8 en Vista.

Para utilizar esto, recuerde que se aplican todas las advertencias habituales sobre la actualización del registro. Deja de IE. Luego, corte y pegue lo siguiente en un archivo, con el nombre de 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_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

Luego haga doble clic en el archivo .reg. Reinicie IE. El nuevo comportamiento que obtienes al hacer clic en una URL que devuelve un documento con Content-Type: application/jsono Content-Type: text/jsones así:

texto alternativo

Qué hace, por qué funciona:

Es 25336920-03F9-11cf-8FD0-00AA00686F13el CLSID de la acción "Examinar en el lugar". Básicamente, esta entrada de registro le dice a IE que para los documentos que tienen un tipo mime de aplicación/json, simplemente véalo en su lugar. Esto no afectará ninguna aplicación/documento json descargado mediante <script>etiquetas, XHR, etc.

Las claves CLSID y Codificación obtienen los mismos valores utilizados para image/gif, image/jpegy text/html.

Esta sugerencia proviene de este sitio y del artículo de Microsoft Manejo de tipos MIME en Internet Explorer .


En FF, tampoco necesitas un complemento externo. Puedes usar el view-source:pseudoprotocolo. Ingrese una URL como esta en la barra de direcciones:

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

Este pseudoprotocolo solía ser compatible con IE también hasta WinXP-sp2, cuando Microsoft lo deshabilitó por razones de seguridad.

Cheeso avatar Mar 22 '2010 12:03 Cheeso

Tuve un problema similar. Estaba usando jQuery "$. GetJSON" y todo funcionó perfectamente en Firefox y Chrome.

Pero no funcionó en IE. Entonces intenté acceder directamente a la URL de json, pero en IE me preguntó si quería descargar el archivo.

Después de mucho buscar vi que debe haber un encabezado en el resultado con un tipo de contenido, en mi caso, el tipo de contenido fue:

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

Pero cuando la página que realizó la solicitud recibe este json, en IE, se debe especificar MISMO TIPO DE CONTENIDO, en mi caso fue:

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

abrazos

Fillipe Silva avatar Mar 02 '2012 04:03 Fillipe Silva

A la solución anterior le faltaba algo y el siguiente código debería funcionar en todas las situaciones:

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_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/x-json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

Simplemente guárdelo en el archivo json.reg y ejecútelo para modificar su registro.

Tomasz Maj avatar Apr 07 '2014 05:04 Tomasz Maj

Cambiar la configuración del tipo mime JSON de IE afectará la forma en que IE trata todas las respuestas JSON.

Cambiar el encabezado de tipo mime a texto/html le indicará efectivamente a cualquier navegador que la respuesta JSON que está devolviendo no es JSON sino texto sin formato.

Ninguna de las opciones es preferible.

En su lugar, querrá utilizar un complemento o herramienta como el Fiddler mencionado anteriormente o cualquier otro proxy de inspector de tráfico de red donde pueda elegir cada vez cómo procesar la respuesta JSON.

user1632922 avatar Aug 29 '2012 11:08 user1632922