我开发了一个独立的XULRunner应用程序,我将其用作浏览器。我没有在应用中显示网址。但我想告诉所访问的网站是否使用SSL(即URL以https://
开头)。如果用户所在网站的部分是安全的,我想向用户显示一条消息。而且,我想这样做的方法是检查URL是否使用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来查看问题是否与我正在访问的应用程序有关,但是,它的行为也一样。
任何关于我可能做错的指针?提前谢谢。
答案 0 :(得分:1)
它有点复杂 - 即使页面本身是通过SSL加载的,它也可以嵌入通过纯HTTP加载的脚本。这意味着整个页面不安全,因为不安全的脚本可能会破坏其他所有内容。因此,您应该依赖现有机制,即browser.securityUI
property(也可在tabbrowser
上获得)。答案here解释了如何检查页面的SSL状态。
但是,您可能希望了解SSL状态何时更改。你会use a progress listener。将针对所有相关更改调用方法onSecurityChange()
,您需要检查aState
参数(仅当aState & Components.interfaces.nsIWebProgress.STATE_IS_SECURE
为您提供非零值时才建立连接)。