我该如何编辑Chrome的MIME类型映射?

28

我在新标签页打开了一张image/x-png类型的图片,但是Chrome却只是下载它。

我通过谷歌搜索发现Chrome不将image/x-png解释为图片文件。

那么,我想编辑Chrome的MIME类型映射。这是否可行?


我有一个想法,但需要测试数据。请在您的问题中添加一些带有虚假响应头(image/x-png)的URL。 - kriegaex
终于找到了一些测试图片 https://bugs.adobe.com/jira/browse/SDK-32051 非常感谢 https://dev59.com/oWox5IYBdhLWcg3wmFaV - zackdever
对我来说,这些图像是普通的image/png格式,因此我使用一个本地Web服务器进行了测试(故意配置错误)。 - kriegaex
5个回答

19

很遗憾您没有回答我的评论,所以我忘记了您的问题并失去了悬赏。我想我的答案甚至更容易使用,因为您不需要点击任何上下文菜单就可以直接在浏览器中查看PNG图片:

Chrome扩展程序Redirector可以配置替换HTTP响应头。我创建了一个规则,用于替换任何以“.png”结尾的URL的Content-Type标头:

将此JSON代码粘贴到文本编辑器中,另存为png_rule.json,然后在Redirector设置中转到规则管理器,单击文件以打开导入/导出选项,并导入版本1的规则:

[{"name":"x-png -> png","match":{"str":"\\.png$","type":0,"modi":false},"sub":{"str":"Content-Type","type":4,"modi":true,"modg":true},"repl":{"str":"image/png","decode":false},"enabled":1}]

从现在开始,您的所有PNG文件都应该可以使用了。

更新:根据重定向作者的建议,用更严格的正则表达式替换了简单的模式匹配。


更新2:存在像Trac这样的系统,它们生成以“.png”结尾的PNG附件的URL,但实际上是HTML页面,只将PNG作为页面的一部分嵌入其中。在这种情况下,我们需要在正则表达式匹配中添加一些要排除的主机,否则HTML页面的内容类型将被设置为image/png,而不是text/html。由于Redirector的限制,头信息只能被覆盖并替换URL的一部分,例如只替换x-pngpng,这是不可能的,因此我们需要采用一种相当丑陋的方法来显式地排除某些主机。例如:

^https?://(?!([^/]+\.)?(?:trac\.edgewall\.org|freetz\.org)/).*\.png$

在排除的URL中包含主机名为trac.edgewall.orgfreetz.org。导入到Redirector的完整JSON是规则版本2:

[{"name":"x-png -> png","match":{"str":"^https?://(?!([^/]+\\.)?(?:trac\\.edgewall\\.org|freetz\\.org)/).*\\.png$","type":0,"modi":true},"sub":{"str":"Content-Type","type":4,"modi":true,"modg":true},"repl":{"str":"image/png","decode":false},"enabled":1}]

之前的规则没有加入黑名单导致两个测试URL无法正常显示HTML页面,现在使用包含黑名单的新规则后这两个URL已经可以正常显示了。它们分别是:

如果您懂一点正则表达式或者想试试,很容易添加其他URL。

顺便说一下:对于Trac URL,一个好的替代方法是使用公共部分"/attachment/ticket/"进行黑名单处理。这样,您就可以列出所有全球范围内的Trac安装,而不是一个固定的主机列表。因此这是 第3版 规则:

[{"name":"x-png -> png","match":{"str":"^https?://(?!([^/]+)?/attachment/ticket/).*\\.png$","type":0,"modi":true},"sub":{"str":"Content-Type","type":4,"modi":true,"modg":true},"repl":{"str":"image/png","decode":false},"enabled":1}]

更新3: Redirector已不再在Chrome商店提供,但历史版本可以从旧的Redirector主页下载。


上面的链接“Redirector”似乎已经失效了。您能否推荐另一个? - 2540625
2
用户@Mardok已回答了关于在哪里找到(旧版本的)Redirector的问题。我再说一遍:https://code.google.com/p/chrome-redirector/downloads/list - kriegaex
由于“Redirector”已经不存在了,https://stackoverflow.com/a/66595574/816213 可能会有所帮助。 - Sachin Jain
@sachinjain024,首先,对于我的示例URL,该扩展程序的工作效果并不如预期。相应的PNG图像总是被下载。其次,显然你是这个扩展程序的作者,所以你应该能够告诉我为什么这个扩展程序想要完全访问权限来查看我在所有网站上的所有数据,以及为什么我必须将我的规则在线保存在你的网站上而不是本地保存。在我看来,这个扩展程序只是一个大数据收集器,我肯定不会使用它,因为我不想用我所有的私人浏览数据来换取它。 - kriegaex
@kriegaex,您能否提供有关该网站和PNG URL的更多详细信息 - https://github.com/requestly/customer-support/issues,我很乐意调查此事。由于应用程序根据用户定义的规则工作,因此我们无法将应用程序限制在特定域上使用。我们不会像您想的那样收集数据,实际上我们将所有规则存储在本地存储中。这是隐私政策-https://requestly.io/privacy/。 - Sachin Jain

15

看起来你无法编辑你的MIME类型映射,可以查看"在Chrome或Firefox中以MIME类型查看"

这个回答特别有趣。作者制作并开源了一个Chrome扩展程序,通过右键菜单添加的选项打开文件为不同的MIME类型,但它并没有提供全局处理机制。

编辑:

该扩展默认只有以text/htmltext/plain打开的选项,但是您可以在扩展设置中添加任何您喜欢的扩展名,包括image/png。这里有一个测试图片

这个bug已经在2012年8月13日被转移到了Chromium bug跟踪器中的未分类,希望这个问题很快也会在Chrome中得到解决。


3
有一个 Chrome 扩展程序可以更改任何模式的内容类型和处理方式,因此它可以用来强制显示 png 而不是下载(但它适用于许多其他情况,我正在使用它将 txt 渲染为 HTML): 修改内容类型 Chrome 扩展程序

2
显然,Chrome没有自己的mime处理数据库,而是使用您的桌面环境的mime处理数据库。例如,在我的基于XFCE4的环境中,设置是通过xfce4-settings应用程序(特别是xfce4-mime-settings)控制的。在Windows桌面上,您需要通过“控制面板”的“默认程序”部分进行设置,详细信息可以参考这里

1
对于MacOS来说,曾经非常有用的工具现在已经停止维护了,那就是RCDefaultApp。而SwiftDefaultApps https://github.com/Lord-Kamina/SwiftDefaultApps 是一个很好的替代品。 - TryTryAgain

2
由于某些原因,Chrome网络商店已经移除了重定向器。您可以在这里找到任何版本的重定向器。
下面是.jpg、.gif和.png格式的JSON数据:
[{"name":"x-png -> png","match":{"str":"\.png$","type":0,"modi":false},"sub":{"str":"Content-Type","type":4,"modi":true,"modg":true},"repl":{"str":"image/png","decode":false},"enabled":1},{"name":"x-jpg -> jpg","match":{"str":"\.jpg$","type":0,"modi":false},"sub":{"str":"Content-Type","type":4,"modi":true,"modg":true},"repl":{"str":"image/jpg","decode":false},"enabled":1},{"name":"x-gif -> gif","match":{"str":"\.gif$","type":0,"modi":false},"sub":{"str":"Content-Type","type":4,"modi":true,"modg":true},"repl":{"str":"image/gif","decode":false},"enabled":1}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接