这是MFC和CHtmlView,但它可能适用于所有IE Web控件使用。
当网页控件导航到某些网站上的某个网页时,我们会收到HTTP / HTTPS混合内容警告弹出窗口。
是否有任何标志,命令或EXE特定的注册表项可以在我们的程序运行时设置,将禁用警告?更好的是,我们可以选择“是”还是“否”回应?
我们不控制网站,因此“修复网页”不是一种选择。我们的程序在客户PC上运行,因此“进入IE设置”也不是一个好的解决方案。
答案 0 :(得分:3)
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中,您只能使用您自己的COccManager替换控件容器calling AfxEnableControlContainer全局覆盖CreateSite方法。
更换控制站点后,通过控制站点类上的BEGIN_INTERFACE_PART / END_INTERFACE_PART宏添加IServiceProvider和安全管理器接口(,IInternetSecurityManager,可选IInternetSecurityManagerEx和IInternetSecurityManagerEx2)。如果您不熟悉MFC宏,请检查TN038: MFC/OLE IUnknown Implementation。您的实现应该返回INET_E_DEFAULT_ACTION,除非该方法是ProcessUrlActionaction / ProcessUrlActionactionEx / ProcessUrlActionEx2并且代码是URLACTION_HTML_MIXED_CONTENT,那么您需要返回S_OK。使用URLPOLICY_ALLOW填充pPolicy的地址以静默允许混合内容,或禁用URLPOLICY_DISALLOW。使用URLPOLICY_QUERY在需要时询问用户。