Mientras depuro aplicaciones jQuery que usan AJAX, a menudo tengo la necesidad de ver el json que el servicio devuelve al navegador. Así que soltaré 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:
Pero cuando el código del lado del servidor funciona correctamente y en realidad devuelve JSON, IE me pide que lo descargue, por lo que no puedo ver la respuesta.
¿Puedo hacer que IE NO haga eso, en otras palabras, simplemente mostrarlo como si fuera texto sin formato?
Sé que podría hacer esto si configuro el encabezado Content-Type para que sea 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 apoyar los esfuerzos de depuración.
Respuestas:
Encontré la respuesta.
Puede configurar IE8 para mostrar application / json en la ventana del navegador actualizando el registro. No hay necesidad de una herramienta externa. No lo he probado ampliamente, pero funciona con IE8 en Vista.
Para usar esto, recuerde, 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
.Luego haga doble clic en el archivo .reg. Reiniciar IE. El nuevo comportamiento que obtienes al hacer cosquillas en una URL que devuelve un documento con
Content-Type: application/json
oContent-Type: text/json
es así:Qué hace, por qué funciona:
El
25336920-03F9-11cf-8FD0-00AA00686F13
es el CLSID para la acción "Examinar en el lugar". Básicamente, esta entrada del registro le dice a IE que para los documentos que tienen un tipo mime de aplicación / json, solo véalo en su lugar. Esto no afectará a los documentos de aplicaciones / json descargados a través de<script>
etiquetas o XHR, etc.Las claves CLSID y codificación obtienen los mismos valores utilizados para
image/gif
,image/jpeg
ytext/html
.Esta sugerencia proviene de este sitio y del artículo de Microsoft Manejo de tipos MIME en Internet Explorer .
En FF, tampoco necesita un complemento externo. Puedes usar el
view-source:
pseudo-protocolo. Ingrese una URL como esta en la barra de direcciones:Este pseudo-protocolo solía ser compatible con IE, también, hasta WinXP-sp2, cuando Microsoft lo deshabilitó por razones de seguridad.
fuente
reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /t REG_SZ /d "{25336920-03F9-11cf-8FD0-00AA00686F13}"; reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /v Encoding /t REG_DWORD /d 0x08000000
text/json
llave.Tuve un problema similar. Estaba usando el jQuery "$. GetJSON" y todo funcionó perfectamente en Firefox y Chrome.
Pero no funcionó en IE. Así que intenté acceder directamente a la URL de json, pero en IE me preguntó si quería descargar el archivo.
Después de mucha búsqueda, vi que debe haber un encabezado en el resultado con un tipo de contenido, en mi caso, el tipo de contenido era:
Pero cuando la página que realizó la solicitud recibe este json, en IE, debe especificarse MISMO TIPO DE CONTENIDO, en mi caso fue:
abrazos
fuente
text/plain; charset=UTF-8
. No es necesario enviar mensajes de texto / html.Faltaba la solución anterior, y el código siguiente debería funcionar en cada situación:
Simplemente guarde el archivo json.reg y ejecútelo para modificar su registro.
fuente
Si está de acuerdo con que IE abra el JSON en un bloc de notas, puede cambiar el programa predeterminado de su sistema para archivos .json a Bloc de notas.
Para hacer esto, cree o busque un archivo .json, haga clic con el botón derecho del mouse y seleccione "Abrir con" o "Elegir programa predeterminado".
Esto puede ser útil si por casualidad quiere usar Internet Explorer pero su compañía de TI no le permitirá editar su registro. De lo contrario, recomiendo las respuestas anteriores.
fuente
Uso Fiddler con el complemento JSONViewer para inspeccionar JSON. No creo que sea posible hacer que IE se comporte sin tocar el registro tal vez. Aquí hay alguna información.
fuente
Cambiar la configuración de tipo mime JSON de IE afectará la forma en que IE trata todas las respuestas JSON.
Cambiar el encabezado de tipo mime a text / html le dirá 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á usar 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.
fuente
text/html
no le dice al navegador que la respuesta es texto plano, sino HTML. Si decides que quieres texto plano, úsalotext/plain
. De lo contrario, puede terminar con algunas vulnerabilidades interesantes de XSS.FireFox + FireBug es muy bueno para este propósito. Para IE hay una barra de herramientas para desarrolladores que nunca he usado y que pretendo usar, por lo que no puedo proporcionar muchos comentarios.
fuente
Acabo de tener el mismo problema con un XMLHttpRequest. El sitio funciona perfectamente en Chrome y FF, y en docenas y docenas de navegadores Internet Explorer en producción. Esta UNA máquina (la que nuestra compañía está configurando para ser una máquina de demostración, por supuesto) decidió que iba a solicitar que se guardara la respuesta json a una solicitud ajax.
La solución de regedit aceptada a continuación lo arregló. Gracias.
fuente
Puede ver la respuesta en Fiddler: http://www.fiddler2.com/fiddler2/
¡Esa es una buena herramienta para tales cosas!
fuente