在调试使用AJAX的jQuery应用程序时,我经常需要查看服务返回给浏览器的json。因此,我将JSON数据的URL放入地址栏中。
这对ASPNET很好,因为在发生编码错误的情况下,我可以在浏览器中看到ASPNET诊断错误:
但是,当服务器端代码正常工作并实际返回JSON时,IE会提示我下载它,因此看不到响应。
我可以让IE不这样做吗,换句话说,就是像纯文本一样显示它吗?
我知道如果将Content-Type标头设置为,我可以做到这一点text/plain。
text/plain
但这特别是一个ASPNET MVC应用程序的上下文,当我在一种操作方法上使用JsonResult时,它将自动设置响应。我也想保留适当的内容类型,而不是仅仅为了支持调试而更改它。
我找到了答案。
您可以通过更新注册表将IE8配置为在浏览器窗口中显示application / json。无需外部工具。我没有对此进行广泛的测试,但是它可以在Vista上的IE8上使用。
要使用此功能,请记住,所有有关更新注册表的常规警告都适用。停止IE。然后,将以下内容剪切并粘贴到名称为的文件中json-ie.reg。
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:
Content-Type: application/json
Content-Type: text/json
它做什么,为什么起作用:
这25336920-03F9-11cf-8FD0-00AA00686F13是“就地浏览”操作的CLSID。基本上,此注册表项告诉IE,对于具有MIME类型的application / json的文档,只需就地查看即可。这不会影响通过<script>标签或XHR等下载的任何application / json文档。
25336920-03F9-11cf-8FD0-00AA00686F13
<script>
CLSID和编码密钥获得用于相同的价值观image/gif,image/jpeg和text/html。
image/gif
image/jpeg
text/html
此提示来自此站点,以及Microsoft的文章“ 在Internet Explorer中处理MIME类型”。
在FF中,您也不需要外部加载项。您可以只使用view-source:伪协议。在地址栏中输入如下网址:
view-source:
view-source:http://myserver/MyUrl/That/emits/Application/json
IE也一直支持该伪协议,直到WinXP-sp2,Microsoft出于安全原因禁用了该伪协议。