- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经使用 C# 在 .net 2.0 应用程序中实现了异步可插入协议(protocol),它将存储在本地计算机上的 html 文件加载到 MemoryStream 中。
当我使用本地文件路径在 webbrowser 控件中正常加载 html 文件时,xmlhttprequest 工作正常但通过协议(protocol)加载文件并尝试使用 xmlhttprequest 返回拒绝访问错误。
我推测此行为是由于 webbrowser 控件不再知道 html 文件存储在本地计算机上,并将它们加载到不受信任的 internet 区域。
即使我在 IInternetSecurityManager 的 ProcessUrlAction 中为 URLACTION_CROSS_DOMAIN_DATA 返回 S_OK,我用断点检查它以确保它被触发,我的 IInternetSecurityManager 对此操作的返回值被忽略。
我已经尝试在 IInternetSecurityManager 的 MapUrlToZone 中将 pdwZone 设置为 tagURLZONE.URLZONE_LOCAL_MACHINE 用于我的协议(protocol) URL,并使用 GetSecurityId 进行了一些尝试,尽管我不确定我在做什么并破坏了其他事情,例如允许脚本加载等...似乎没有什么可以允许跨域 xmlhttprequest。
任何人都知道我如何让它工作。
最佳答案
不是真正的答案,但它可能有助于隔离问题。我首先用 C++ 实现这个 APP 处理程序,然后使用一些强大的非托管 WebBrowser ActiveX 主机示例(如 Lician Wishick 的 Webform)对其进行测试:
http://www.wischik.com/lu/programmer/webform.html
如果我能让它在非托管主机上可靠地工作,我会继续使用 C# 实现。
我也会尝试设置 FEATURE_BROWSER_EMULATION
到 8000
或更少,以模拟遗留 IE 行为,只是为了检查它是否以这种方式工作。
也就是说,我不会抱太大希望。我已经完成了 my share of WebBrowser/MSHTML integration过去,我有一种感觉,自 IE9 以来,APP 支持没有经过回归测试,支持旨在拥抱开放 Web 标准的新 IE 东西。
已更新,MSDN 含糊地提到 this :
Upon successful completion, pbSecurityId contains the scheme, domain, and zone information, as well as whether the specified pwszUrl was derived from a Mark of the Web.
这是很久以前对我有用的格式(也许在 "Mark of the Web" 被引入之前):
static const char security[] = "https:www.mysite.com\2\0\0"; // C++ puts the termination \0 for us
我相信,2
在这里代表“可信站点”区域。其他区域可以在这里找到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Lockdown_Zones
希望这对您有所帮助。
关于c# - IInternetSecurityManager URLACTION_CROSS_DOMAIN_DATA 和用于 Web 浏览器控件中跨域 XMLHTTP 请求的异步可插入协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22465397/
我已经使用 C# 在 .net 2.0 应用程序中实现了异步可插入协议(protocol),它将存储在本地计算机上的 html 文件加载到 MemoryStream 中。 当我使用本地文件路径在 we
我是一名优秀的程序员,十分优秀!