小编典典

如何说服IE仅显示application / json而不是提供下载?

ajax

在调试使用AJAX的jQuery应用程序时,我经常需要查看服务返回给浏览器的json。因此,我将JSON数据的URL放入地址栏中。

这对ASPNET很好,因为在发生编码错误的情况下,我可以在浏览器中看到ASPNET诊断错误:

替代文字

但是,当服务器端代码正常工作并实际返回JSON时,IE会提示我下载它,因此看不到响应。

替代文字

我可以让IE不这样做吗,换句话说,就是像纯文本一样显示它吗?

我知道如果将Content-Type标头设置为,我可以做到这一点text/plain

但这特别是一个ASPNET
MVC应用程序的上下文,当我在一种操作方法上使用JsonResult时,它将自动设置响应。我也想保留适当的内容类型,而不是仅仅为了支持调试而更改它。


阅读 335

收藏
2020-07-26

共1个答案

小编典典

我找到了答案。

您可以通过更新注册表将IE8配置为在浏览器窗口中显示application /
json。无需外部工具。我没有对此进行广泛的测试,但是它可以在Vista上的IE8上使用。

要使用此功能,请记住,所有有关更新注册表的常规警告都适用。停止IE。然后,将以下内容剪切并粘贴到名称为的文件中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

然后双击.reg文件。重新启动IE。勾选带有Content-Type: application/json或的返回文档的URL时,您将获得以下新行为Content-Type: text/json

替代文字

它做什么,为什么起作用:

25336920-03F9-11cf-8FD0-00AA00686F13是“就地浏览”操作的CLSID。基本上,此注册表项告诉IE,对于具有MIME类型的application
/ json的文档,只需就地查看即可。这不会影响通过<script>标签或XHR等下载的任何application / json文档。

CLSID和编码密钥获得用于相同的价值观image/gifimage/jpegtext/html

此提示来自此站点,以及Microsoft的文章“ 在Internet
Explorer中处理MIME类型”


在FF中,您也不需要外部加载项。您可以只使用view-source:伪协议。在地址栏中输入如下网址:

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

IE也一直支持该伪协议,直到WinXP-sp2,Microsoft出于安全原因禁用了该伪协议。

2020-07-26