MSXML同步加载URL中XML触发E_ACCESSDENIED错误原因问询
问题原因解析
DOMDocument60与ServerXMLHTTP的安全模型本质差异
- DOMDocument60在同步模式(
async=false)下加载远程XML时,底层依赖WinInet+IE安全区域规则,即便你已排除WinInet全局设置问题,IE的区域权限(比如Internet区域的跨域访问限制、脚本执行权限)仍会触发E_ACCESSDENIED错误。 IServerXMLHTTPRequest采用独立的HTTP处理栈,完全脱离IE安全模型,不受区域权限、ActiveX安全设置等限制,因此同步加载可正常运行。
为何设置ServerHTTPRequest属性后仍报错?
给DOMDocument60设置ServerHTTPRequest=true时,仅在异步模式下才会切换为ServerXMLHTTP的加载栈。在同步模式(async=false)下,DOMDocument会强制回退到WinInet+IE安全上下文的加载逻辑,直接忽略ServerHTTPRequest属性的设置——这是MSXML组件的设计限制,同步加载场景下不会启用ServerXMLHTTP的底层实现。
额外验证方法
将目标URL添加到IE的“受信任站点”区域,若此时DOM同步加载恢复正常,即可确认是IE区域权限限制导致的错误。
内容的提问来源于stack exchange,提问作者Ian Boyd
相关产品推荐
相关产品推荐

