如何防止用户代理显示无法识别的 mime 类型的下载窗口?

Posted

技术标签:

【中文标题】如何防止用户代理显示无法识别的 mime 类型的下载窗口?【英文标题】:How can I prevent user-agents from presenting a download window for unrecognized mime types? 【发布时间】:2010-12-11 19:49:37 【问题描述】:

如果您将Content-Disposition 标头设置为attachment,这将导致用户代理始终显示该文件的下载窗口。我想做与此相反的事情:强制用户代理始终直接显示响应。在这种特殊情况下,我有一个发送 JSON 的 API。我想将其作为application/json 提供为indicated by the specification,但由于用户代理通常无法识别mime 类型,因此它们会显示一个下载窗口。这使得调试非常痛苦,所以如果可以的话,我想解决这个问题。有什么建议吗?

【问题讨论】:

【参考方案1】:

作为替代解决方案,您可以将查询字符串或扩展名添加到 URL,如果存在,则将其作为文本/纯文本发送。这样,您可以通过查看 http://example.com/path/to/json.txt 进行调试,而现实世界的使用仍会获取 application/json。

据我所知,没有一种普遍可靠的方法可以始终使内容内联显示。

【讨论】:

我也可以在 URI 前面加上 view-source:,但我真的更希望能够在不考虑它的情况下进行调试。 您还可以根据是否为 ​​AJAX 请求来更改内容类型。【参考方案2】:

我用来在浏览器中调试 JSON 的另一种方法是用于 Firefox 的 JSONView plugin。

【讨论】:

对于检查 AJAX 请求的内容(以及许多其他信息),firebug 也很有帮助 (getfirebug.com)。 我已经有了 FireBug,但是如果你在使用它的函数之前编写 JSON 输出的代码,它并没有真正的帮助。 还有 JSONovich,表现类似:lackoftalent.org/michael/blog/json-in-firefox 现在我只需要一个用于 Chrome 的。【参考方案3】:

我实际上采取了两种方法。一,我编写了自己的迷你浏览器,这样我就可以看到任何响应并发出 PUT、POST 和 DELETE 请求。另一种是运行 Fiddler,同时使用浏览器发出请求。您可以使用 Fiddler 查看请求和响应中的所有详细信息。

【讨论】:

是的……不。没有编写我自己的浏览器来解决这个问题。我也在工作中运行 Mac 和 Linux,所以 Fiddler 也出局了。

以上是关于如何防止用户代理显示无法识别的 mime 类型的下载窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 jQuery tablesorter 中的“未捕获的异常:语法错误,无法识别的表达式”?

当用户触摸注释时,无法识别的选择器崩溃

尝试将用户登录到 QBChat 时如何删除错误“无法识别的选择器”

如何检测用户是不是从已识别的计算机连接?

ArgumentException:连接字符串中无法识别的属性“用户 ID”

用ACCESS数据库提示 无法识别的数据库格式