0

我开发了一个独立的 XULRunner 应用程序,用作浏览器。我没有在应用程序中显示 URL。但我想知道访问的站点是否使用 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 尝试过,看看问题是否出在我正在访问的应用程序上,但在那里,它的行为也是一样的。

关于我可能做错了什么的任何指针?提前致谢。

4

1 回答 1

1

它比这更复杂一些——即使页面本身是通过 SSL 加载的,它也可以嵌入通过纯 HTTP 加载的脚本。这意味着整个页面不安全,因为不安全的脚本可能会危及其他所有内容。所以你应该依赖现有的机制,即browser.securityUI属性(也可用tabbrowser)。此处的答案解释了如何检查页面的 SSL 状态。

但是,您可能想了解 SSL 状态何时发生变化。您将为此使用进度侦听器。所有相关更改都会调用该方法onSecurityChange(),您需要检查参数(只有在为您提供非零值aState时连接才是安全的)。aState & Components.interfaces.nsIWebProgress.STATE_IS_SECURE

于 2012-05-24T08:14:09.860 回答