我在 Fedora 22 上使用 Firefox 41.0.1。
当我尝试打开 GitLab 网站上的 PNG 图像链接时,我注意到了此行为。服务器回复"Content-Disposition:"inline; filename="logo.png"
和Content-Type:"application/octet-stream"
。
我希望它要么在浏览器上显示图像,要么让我在系统默认图像查看器上打开它。我知道这是可能的,至少在 Windows 中是可能的。请参阅下面由 @JourneymanGeek 提供的 GIF:
我做了一些测试此工具并且,显然,当我单击一个链接并且响应头包含application/octet-stream
mime 类型时,Firefox 建议我使用 gedit 打开该文件,并说明它是默认应用程序。
- 如果我下载该文件(在本例中为 PNG 图像)并双击它,它会在 Eye of Gnome 上打开。
xdg-open
也可以在 Eye of Gnome 中打开它。application/octet-stream
不存在/usr/share/applications/defaults.list
$ grep "gedit" /usr/share/applications/defaults.list
仅返回text/plain=org.gnome.gedit.desktop
- 我已删除该
~/.mozilla/firefox/<profile>/mimeTypes.rdf
文件,但问题仍然存在。 - 我也删除了该
~/.local/share/applications/mimeapps.list
文件,但问题仍然存在。 - 我已经重新启动了 Firefox,并且退出了我的 Gnome 配置文件。
这是 Firefox 文件关联屏幕:
因此,我的问题是:是否可以使用 Firefox在浏览器上显示文件(如果它是可以渲染的文件),或者提供正确的应用能够渲染它吗(如果系统上有的话)?
还是服务器声明了错误的 mime 类型导致这一切变得不可能?
还,为什么它认为gedit
是默认octet-stream
处理程序? 它是否正确?
答案1
我也删除了该
~/.local/share/applications/mimeapps.list
文件,但问题仍然存在。
mimeapps.list
系统其他地方可能还有另一个。您可以浏览列表这里或者使用以下命令之一搜索您的系统:
locate mimeapps.list
或者
find / -name 'mimeapps.list'
检查application/octet-stream
其中的任何条目,并将其注释掉或删除。
答案2
答案3
@Bob 回答了问题的第二部分:如何控制哪个应用程序打开文件。
第 1 部分的答案是:Firefox 下载所有类型为 application/octet-stream 的文件通过设计. 根据 HTTP 标准,如果指定了内容类型,兼容的浏览器不得猜测服务器。由于八位字节流文件包含任意数据,因此浏览器应该下载它们。
大多数浏览器为了方便用户而忽略了标准。Firefox 则不然。正如 @Geyslan 的回答所述,您需要使用第三方扩展来规避这种设计选择。