2012-05-24 103 views
0

我開發了一個獨立的XULRunner應用程序,我正在使用它作爲瀏覽器。我沒有在應用中顯示網址。但我想告訴訪問的網站是否使用SSL(即,網址以https://開頭)。如果他們所在的網站部分是安全的,我希望向用戶顯示一條消息。而且,我想要做的方式是檢查URL是否使用SSL。我已經做了一些搜索,但目前爲止沒有成功,但我沒有放棄。任何建議將不勝感激。如何判斷一個網站是否使用SSL

我已經做了一些更改,現在我的onSecurityChange()方法如下所示。

onSecurityChange: function(aWebProgress, aRequest, aState) { 
    if((aState & Components.interfaces.nsIWebProgress.STATE_IS_SECURE) == 0) { 
    document.getElementById("lblConnectionStatus").setAttribute("value", "Insecure Connection"); 
    } else { 
    document.getElementById("lblConnectionStatus").setAttribute("value", "Secure Connection"); 
    } 
    return 0; 

}

然而,它似乎並沒有改變,當我從不安全轉移到安全網頁。我已經用Yahoo和Hotmail試了一下,看看問題是否與我正在訪問的應用程序有關,但是它的表現也是一樣的。

任何指針,我可能做錯了什麼?提前致謝。

回答

1

這比這更復雜 - 即使頁面本身通過SSL加載,它也可以嵌入通過普通HTTP加載的腳本。這意味着整個頁面是而不是安全,因爲不安全的腳本可以危害其他一切。所以你應該依靠現有的機制,即browser.securityUI property(也可在tabbrowser上獲得)。答案here解釋瞭如何檢查頁面的SSL狀態。

但是,您可能想了解SSL狀態何時更改。你會爲此use a progress listener。將調用方法onSecurityChange()進行所有相關更改,您需要檢查aState參數(僅當aState & Components.interfaces.nsIWebProgress.STATE_IS_SECURE爲您提供非零值時,連接纔是安全的)。

+0

感謝負載,Palant。讓我試試看。 – okello

+0

你好帕蘭特。我已經做了一些更改來整合您的建議,但我正面臨一些問題。我已經更新了上面的問題以反映這一點。你覺得我可能做錯了什麼? – okello

+0

不,我沒有看到你引用的代碼有什麼問題。 –

相關問題