【问题标题】:JavaScript "Access is Denied" error - no iframesJavaScript“访问被拒绝”错误 - 没有 iframe
【发布时间】:2010-11-10 12:30:34
【问题描述】:

我们在 IE8 的客户应用程序中看到间歇性 JavaScript“访问被拒绝”错误。该错误偶尔会发生在某些用户身上,而不会发生在其他用户身上。

我可以通过跳过几个环节来可靠地在我的浏览器上重现错误:

  • 转到相关页面(请注意 Internet 区域,即使 Web 服务器是在我们的子网上运行的测试服务器)
  • 打开 Internet 安全属性(显示“某些设置由您的系统管理员管理”的消息)
  • 打开本地内网
  • 点击网站
  • 点击确定
  • 点击确定
  • 请注意,该区域已更改为本地 Intranet(即使我没有进行更改)
  • 点击页面上的下拉菜单
  • JavaScript 错误“类型为空或不是对象”

调试该错误表明它在“Sys.UI.DomEvent”函数中被抛出到 Microsoft.Ajax.js 中,并且在调用堆栈中向上走显示根错误发生在“Sys.UI.DomEvent.addHandler”中当它调用“Sys.UI.DomElement._getWindow(a).event”(a 是 DispHTMLWindow2 类型)时会引发异常:

name: TypeError
description: “Access is denied.”
message: “Access is denied.”
number: -2147024891

其他用户无需进入 Internet 安全属性即可看到错误。

我对“访问被拒绝”错误所做的所有研究都表明使用来自不同来源的 iframe 存在问题,因此我从相关页面中删除了所有 iframe,但仍然看到错误。

在没有任何 iframe 的页面中,什么会导致 JavaScript “访问被拒绝”错误?

【问题讨论】:

  • 从不同的协议(http 与 https)或端口请求的任何资源? Ajax 请求发送到不同的地址?
  • 不,在 Fiddler 中查看,所有流量都到同一个主机/端口。

标签: javascript asp.net-ajax internet-explorer-8


【解决方案1】:

事实证明,这是因为当用户在广泛使用 JavaScript 的特定页面上时,某些事情导致 Internet 安全区域偶尔切换。当 IE 中的页面在加载后更改安全区域时,无法执行访问页面上控件的父窗口的 JavaScript。

仍然不确定是什么导致页面更改了安全区域,但这似乎只发生在我们通过 IP 引用站点时,而不是主机名(总是显示为本地 Intranet 区域)。

【讨论】:

  • 嗨,我也遇到过这样的事情……你知道那是什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 2012-12-21
  • 2010-12-23
  • 2017-06-25
相关资源
最近更新 更多