【发布时间】:2010-11-06 07:58:47
【问题描述】:
我正在寻找为 IE6+ 开发扩展的方法,该扩展将允许处理自定义 MIME 类型。
例如,我需要能够获取服务器返回的具有自定义 MIME 类型的文档,对其执行一些处理,然后将 MIME 类型更改回 IE 可以本机处理的类型,例如作为 text/html 或 image/jpeg。
我熟悉 urlmon MIME 过滤器,但它们有一个很大的弱点;它们仅针对顶级文档调用,而不针对任何其他页面内容(例如图像等)。
我能想到的一种方法是使用 vtable/iat 补丁挂钩 HTTP/S 协议处理程序,类似于 Google Gears 的工作方式,以便能够拦截响应标头并修改标头并在收到具有指定 MIME 类型的文档时响应正文。
我想知道是否有其他人对如何以一种不那么老套/侵入性的方式来实现这一点有任何好的想法。
编辑: 只是想我会跟进这件事,并提到我将 vtable 补丁放入 HTTP/S 协议处理程序中,它的效果比我预期的要好得多。如果其他人想做这样的事情,我强烈建议您查看 Google Gears 中的 HttpHandlerPatch 类以获得一些灵感。
【问题讨论】:
-
您好,我正在为 IE 编写可屏蔽广告的扩展程序。我需要像你一样的功能——过滤 MIME/内容。不幸的是,我在 Windows C++ 编程方面没有丰富的经验。你能告诉我更多关于“vtable 和 iat 修补”的信息吗?这和“API 挂钩”一样吗?因为我在谷歌中找不到太多关于“vtable patching”的信息。你有关于这个主题的任何好的资源以及你是如何进行内容过滤的吗?我查看了这个齿轮的 HttpHandlerPatch 类,但现在它对我来说太复杂了。
-
嗨。我提到的内容相当复杂。我最终使用了一些 API 挂钩技术来挂钩 WinInet API,因为它更干净并且给了我更多的控制权。能够用这种方法做你想做的事情仍然不是很简单,但也不算太糟糕。您可以查看 Microsoft Research 的 Detours 项目,以获取应该适用于此的 API 挂钩库,尽管由于 Detours 商业版的价格过高(10,000 美元以上),我最终推出了自己的(虽然不太灵活)版本.
标签: internet-explorer-6 mime-filter