2014-01-10 99 views
0

这是MFC和CHtmlView,但它可能适用于所有IE Web控件的使用。MFC CHtmlView - 抑制混合内容警告?

当Web控件导航到某些站点上的页面时,我们正在获取HTTP/HTTPS混合内容警告弹出窗口。

是否有任何标志,命令或特定于EXE的注册表项可在我们的程序运行时进行设置,以禁用警告?更好的是,我们可以选择“是”还是“否”?

我们不控制网站,所以“修复网页”不是一个选项。我们的程序正在客户PC上运行,因此“进入IE设置”也不是一个好的解决方案。

回答

2

Implement a Custom Security Manager对CHTMLView派生类使用的控制站点类使用成功代码处理URLACTION_HTML_MIXED_CONTENT。控制站点是MFC的ActiveX客户端站点from which the webbrowser control used in CHTMLView queries host capabilities的实现。

如果您使用MFC 7.0或更高版本,则需要替换控制站点via an overriden CreateControlSite function。在MFC 6.0中,您只能用覆盖CreateSite方法的自己的COccManager将全局控制容器替换为calling AfxEnableControlContainer

更换控制站点后,通过控制站点类上的BEGIN_INTERFACE_PART/END_INTERFACE_PART宏添加IServiceProvider和安全管理器接口(,IInternetSecurityManager,可选的IInternetSecurityManagerEx和IInternetSecurityManagerEx2)。如果您不熟悉MFC宏,请检查TN038: MFC/OLE IUnknown Implementation。除非方法是ProcessUrlActionaction/ProcessUrlActionactionEx/ProcessUrlActionEx2并且代码是URLACTION_HTML_MIXED_CONTENT,那么您的实现应该返回INET_E_DEFAULT_ACTION,那么您需要返回S_OK。使用URLPOLICY_ALLOW填充pPolicy的地址以静默地允许混合内容,或URLPOLICY_DISALLOW禁止。在需要时使用URLPOLICY_QUERY来询问用户。