2011-05-11 102 views
11

在我的工作中,他們在內部網頁上使用「中央登錄」功能。無論何時內部網頁需要驗證,它都會將您轉到中央登錄頁面,登錄後會將您發送回您嘗試查看的頁面。創建Firefox插件來即時修復損壞的網頁

在HTML該中心登錄頁面的第一行開始與此:

<!-- Encoding=ISO-8859-1; 

從未結束評論,這意味着整個文檔中的所有HTML代碼實際上評論出。這在IE6(這是公司標準 - eek!)中工作正常,並且它曾經在Firefox中工作,但是當我升級到Firefox 4時,這不再起作用(因爲它不應該 - 它遵循標準)。

我已保存的源,改變了第一行:

<!-- Encoding=ISO-8859-1; --> 

然後頁面上會顯示,但因爲它是從file:///加載,我無法提交我的憑據到主服務器。 ..

我討厭使用IE6,但對於所有內部頁面,我堅持使用它,因爲每次我發送到中央登錄時,Firefox都呈現空白頁面。

是否有可能創建Firefox插件(甚至是Greasemonkey腳本)來修改HTML,因爲它在呈現之前進入瀏覽器?我看到很多修改HTML的例子,一旦它已經被加載,但找不到任何東西來操縱,而加載它的則是

我想我可以接受除插件外的其他解決方案,但這是我唯一能想到的。此外,我們也不允許使用Chrome或Safari,因此無法使用。不,我不能和負責中央登錄頁面的負責人交談,讓他們改變它。由於頁面的性質,代理可能也非常困難。

提前致謝!

+3

真是一團糟:)我喜歡它,+1 – Henry 2011-05-11 16:44:13

+2

+1出於同情。真是一團糟。 – delnan 2011-05-11 16:45:47

+2

@亨利和@德南 - 我很欣賞這種同情。這很有趣,因爲其他門票已經被其他黑羊(Firefox用戶)打開,標準響應是「使用標準瀏覽器」(IE6)。實際上,現在我想起來並沒有那麼熱鬧...... – BrianH 2011-05-11 16:54:57

回答

1

也許一個本地的Apache mod_proxy和mod_subsitute可以用於這個?從一個例子來源於berkek.com

<VirtualHost *> 
    ServerAdmin [email protected] 
    ServerName www.yourcompany.com 
    <Proxy *> 
    Order deny,allow 
    </Proxy> 
    ProxyRequests on 
    ProxyPass/http://www.yourcompany.com/ 
    ProxyPassReverse/http://www.yourcompany.com/ 
    AddOutputFilterByType SUBSTITUTE text/html 
    Substitute "s|<!-- Encoding=ISO-8859-1;|<!-- Encoding=ISO-8859-1; -->|n" 
</VirtualHost> 
+0

我不知道ProxyPassReverse,所以也許這會起作用。對我之前回答的評論 - 不會代理緩慢我所有的瀏覽下來,只是爲了修復1登錄頁面? (當然,自從我在IE6以來,我的瀏覽是一種可怕的體驗) – BrianH 2011-05-11 19:49:53

+0

當然,您可以將瀏覽器配置爲僅在需要此修復程序的站點上使用代理。見例如[proxy pac file](http://en.wikipedia.org/wiki/Proxy_auto-config) – 2011-05-11 20:06:30

+0

pac文件運行良好。但是,我無法讓替代工作。我安裝了XAMPP並添加了一個帶有替代線的虛擬主機。它服務於頁面,但不會替代。我甚至做了's | a | BLAH | ni'的替代品,但它仍然行不通。發現很多文檔,但似乎沒有任何工作。 – BrianH 2011-05-12 14:23:50

0

你沒有使用代理的原因是什麼?

Apache的httpd + mod_proxy + mod_ext_filter應該可以輕鬆解決您的問題;你使用mod_ext_filter來插入一個程序來修復頁面(小shell腳本應該這樣做)。

+0

嗯 - 我真的不希望我的所有瀏覽都是通過代理 - 只需要一頁(登錄頁面)。 mod_ext_filter會不會減慢我的瀏覽速度? (不太熟悉) – BrianH 2011-05-11 19:48:35

+0

mod_proxy w/ProxyPass和ProxyPassReverse不是通用代理。您訪問http:// newapacheserver /路徑並將請求發送到http:// borkedappserver /路徑,您不必在瀏覽器中配置代理。 – alex 2011-05-12 18:26:53

1

下面是一個方法,我發現:

Fiddler Web Debugging Proxy。它基本上是做什麼@Tat​​u Lahtela suggested和什麼@alex suggested,只有沒有apache。

下面是我所採取的步驟:

  1. Download並安裝小提琴手
  2. 運行提琴手,監聽8888端口(默認)
  3. 在提琴手選項(HTTPS選項卡),檢查「解密HTTPS流量」框
  4. 在提琴手中,單擊規則菜單,然後單擊自定義規則。
  5. 在我的文本編輯器,我發現OnBeforeResponse功能,並添加以下代碼:

    if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){ 
        // Remove any compression or chunking  
        oSession.utilDecodeResponse(); 
    
        var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes); 
    
        var oRegEx = /<!-- Encoding=ISO-8859-1; /gi; 
        oBody = oBody.replace(oRegEx, "<!-- Encoding=ISO-8859-1; -->"); 
    
        oSession.utilSetResponseBody(oBody); 
    } 
    
  6. 在提琴手,工具 - >選項 - >連接選項卡下,單擊「複製瀏覽器代理配置URL」(這是@Tatu Lahtela提到的代理PAC文件)。

  7. 在Firefox中,工具 - >選項 - >高級標籤 - >網絡標籤 - >設置,勾選「自動代理配置URL和步驟6#的URL粘貼。
  8. 網上衝浪!

我修改了PAC文件來限制去提琴手像@Tatu Lahtela建議的網站。

這對我的作品,以最少的設置而Firefox的插件將是對我好,因爲我也不會用一個外部程序,但建立一個這樣做似乎很難。

感謝大家幫助!我會將@Tatu Lahtela的答案標記爲公認的答案,因爲這是我能夠找到我所需要的。