【问题标题】:access the IInternetHostSecurityManager::GetSecurityId Method to work around a cross domain iframe issue访问 IInternetHostSecurityManager::GetSecurityId 方法以解决跨域 iframe 问题
【发布时间】:2011-03-06 13:04:56
【问题描述】:

经过大量研究,似乎在 IE 的 Web 浏览器控件中创建和使用我们自己的安全管理器,我们需要覆盖 IInternetHostSecurityManager 和 IInternetSecurityManager 的 GetSecurityId 方法,因为在某些时候它们会被比较,如果发现返回不同的结果他们抛出 UnauthorizedAccess 异常。有没有人成功覆盖 IInternetHostSecurityManager。 MSDN 建议通过 SID_SInternetSecurityManager 访问它,但我没有找到对 SID_SInternetSecurityManager 的任何其他引用。此外,我还没有找到 IInternetHostSecurityManager 的 guid,因此我无法通过 IServiceProvider.QueryService 访问它。有人成功解决了这个问题,或者在 webbrowser 控件中找到了访问跨域 iframe 的不同方法吗?

【问题讨论】:

    标签: c# security browser cross-domain


    【解决方案1】:

    IID_IInternetHostSecurityManager、SID_SInternetSecurityManager 和 SID_SInternetHostSecurityManager 在 urlmon.h 和 urlmon.idl 中定义。如果您在 C++ 中遇到链接错误,请检查 How to avoid error "LNK2001 unresolved external" by using DEFINE_GUID

    如果您使用的是脚本语言,您可以使用midl /tlb 从 urlmon.idl 生成类型库并改为导入类型库。您还可以根据 urlmon.idl 中的定义声明 guid 和接口。

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 2013-03-05
      • 1970-01-01
      • 2012-03-12
      • 2012-12-11
      • 2011-02-18
      相关资源
      最近更新 更多