2009-07-03 59 views
6

我試圖將一個Internet Explorer插件移植到Firefox,但我不確定在哪裏尋找我需要的東西。如何在Firefox中爲所有頁面元素實現內容轉換器?

基本上我需要能夠篩選瀏覽器接收到的所有內容與某個Content-Type標頭。我試着實現一個流轉換器,這個工作,但只適用於頁面,框架或iframe中的頂級文檔。我也遇到了與IE相同的問題,並且解決這個問題非常糟糕,因爲我理想的情況是希望這是跨平臺的,所以我真的希望能夠在不使用vtable黑客的情況下在Firefox中執行此操作。

內容以專有壓縮格式壓縮。因此,我需要接收數據,解壓縮數據,然後將Content-Type更改回原始未壓縮文件應具有的數據。

如果有一種方法可以過濾所有收到的數據,這可能是可以接受的,我可以自己處理解析頭。

謝謝

回答

3

我想我可能已經找到了我需要的東西。我遇到了這個鏈接,用於跟蹤HTTP調用:http://blues.ath.cx/firekeeper/resources/http_tracer.html

由於某種原因,JavaScript實現似乎存在一些問題,我不是一個JavaScript專家,但我已經實現了它在C++和初步結果表明我應該能夠根據我的需要進行修改。

基本上我們用我們自己的實現取代了nsIHttpProtocolHandler服務,它保留了對初始實現的引用。當對服務進行調用時,我們只需將它代理到保存的原始實現。然後我們提供我們自己實現的nsIHttpChannel和nsIStreamListener,我們也使用它作爲代理。

我們再次將大部分電話都退回給原來的處理程序。但是在OnDataAvailable中,我們不是將數據傳遞給底層的nsIStreamListener,而是使用nsIStorageStream進行保存。然後在OnStopRequest中,獲取所有數據後,我們可以對其進行解壓縮,然後在原始處理程序上調用OnDataAvailable,然後調用OnStopRequest。

到目前爲止,它一直在進行一些小的簡單測試,但我必須通過一些更嚴格的測試......我還必須弄清楚我是否可以用HTTPS做同樣的事情。

我現在看到的最大問題是它依賴於一些未凍結的接口,如nsIHttpChannelInternal。儘管我可以告訴我,但無法提供幫助,而且我的版本兼容性要求很小,所以如果必須的話,我可以忍受它。

在此期間,如果任何人有任何其他建議,我所有的耳朵:d

+0

我一直在使用的技術,像這樣的一個擴展我的工作 - 但它似乎已經停止營運FF17。你有沒有繼續努力? – Daniel 2012-10-31 22:20:58

相關問題