在嵌入式 Gecko 浏览器中阻止 https url
我有一个嵌入了 gecko 浏览器的应用程序。 当我尝试访问任何 https url 时,应用程序崩溃,因为此时 nss 尚未正确初始化。 崩溃发生在 PK11_TokenExists() 中。 我想阻止我的浏览器呈现 https 网站。 如果用户单击 https 链接,我可以在 nsIURIContentListener 的 OnStartURI() 中阻止该加载。但是,如果用户输入 orkut.com,我不会在 OnStartURI() 中知道它是 http url 还是 https url(即是否是是否使用 SSL)。 我想知道在这种情况下如何阻止 https 网址?
谢谢 杰布斯普72
I have an application in which a gecko browser is embedded. The application is crashing when I try to access any https url's because nss is not properly initialised at this point. The crash is in PK11_TokenExists(). I want to block my browser from rendering https sites. If a user clicks on a https link I can block that load in OnStartURI() of nsIURIContentListener.But if the user types in say orkut.com I wont know in OnStartURI() whether its a http url or a https one(i.e. whether it will use SSL or not). I wanted to know how I can block https url's in such cases?
Thanks
jbsp72
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我首先尝试找出应用程序在 HTTPS/SSL 连接上崩溃的原因。 我认为解决崩溃比试图避免它更好。
I would first try to figure out why your application is crashing on HTTPS/SSL connections. I think it would be better to fix the crash than trying to avoid it.
您可以通过以下方式实现:
实现 nsIWebProgressListener 接口的 OnStateChange 方法。
检查参数
aStateFlags
:如果此参数包含标志STATE_IS_DOCUMENT
和STATE_START
,则正在导航到新位置。要查找 URL,请使用参数
aRequest
。 它具有nsIRequest
类型,但将其转换为nsIChannel
类型。 然后读取URI
属性。 这包含正在导航到的 URL。如果 URI 以“https”开头,请通过调用参数
aRequest
的cancel
方法并传递NS_BINDING_ABORTED
作为参数来中止导航。You can implement this the following way:
Implement the
OnStateChange
method of thensIWebProgressListener
interface.Check the parameter
aStateFlags
: If this parameter contains the flagsSTATE_IS_DOCUMENT
andSTATE_START
, then a new location is being navigated to.To find out the URL, use the parameter
aRequest
. It has typensIRequest
, but cast it to typensIChannel
. Then read theURI
property. This contains the URL being navigated to.In case the URI starts with "https", abort the navigation by calling the
cancel
method of the parameteraRequest
, passingNS_BINDING_ABORTED
as a parameter.