IE 11 错误 - 访问被拒绝 - XMLHttpRequest
Posted
技术标签:
【中文标题】IE 11 错误 - 访问被拒绝 - XMLHttpRequest【英文标题】:IE 11 error - Access is denied - XMLHttpRequest 【发布时间】:2015-01-09 14:08:21 【问题描述】:我在使用 IE11 和 ajax 时遇到了一个特殊错误。对于我使用下面的代码发出的几乎所有请求,一切都很好,但是当我尝试与复制+粘贴方法结合使用时,它返回一个访问被拒绝错误。总结一下
此代码在大多数浏览器中都能正常运行,适用于我编写的所有功能 在 IE 11 + Windows 8.1 中,它在大多数情况下都能正常工作,除非运行特定的复制和粘贴功能 有趣的是,当使用 IE 11,但使用不同的文档模式(例如 8)时,我仍然遇到相同的错误,即使它在 IE8 + Windows 7 中本机运行也是如此 错误是“访问被拒绝”这里是 AJAX 代码:
function ajaxRequest(requestName,responseFunction,parameters)
var xmlhttp;
if (requestName.length==0) return;
if (window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
if (xmlhttp.readyState==4 && xmlhttp.status==200)
if(xmlhttp.responseText == 'Error') alert('Error processing request. Please refresh the page and try again');
else if(xmlhttp.responseText != '') eval(responseFunction+"('"+xmlhttp.responseText+"')");
var now = new Date();
var url = "control/ajax.php?request="+requestName+"¶meters="+parameters+"×tamp"+now;
xmlhttp.open("GET",url,true);
xmlhttp.send();
一个失败的例子,设置了以下变量:
请求名称:“save_marksheet_mark” 响应函数:“update_save_marksheet_mark” 参数:[60962,1284,5]
这段代码有问题吗?在特定情况下,IE11 是否会在此代码中引发错误?
【问题讨论】:
参考本帖***.com/questions/22098259/… 这不是跨域请求 - var url = "control/ajax.php... 它请求的页面与用户已经访问过的站点相同 “但是,当我尝试与复制+粘贴方法结合使用时,它返回访问被拒绝错误” 您是否尝试自行复制粘贴以查看是否这就是“拒绝访问”错误的来源?尽可能消除不必要的代码。 这是我最初的想法,但错误显然出现在 xmlhttp.open 行(在开发人员工具中突出显示) - 当我将其注释掉(以及 xmlhttp.send)时,有没有错误。 尝试将xmlhttp.open("GET",url,true)
行放在xmlhttp.onreadstatchange
声明上方。
【参考方案1】:
这个问题似乎得到了很多关注,所以以防万一有人想知道,我通过在原始 AJAX 调用上使用 setTimeout() 解决了这个问题。例如:
setTimeout(function()
ajaxRequest('save_mark','save_mark_completed',[60962,1284,5])
, 1);
我假设这是 IE 中的某种错误。只需 1 毫秒!
【讨论】:
这太荒谬了,我非常感谢你发布这个解释,因为在弄清楚到底发生了什么之前,我会挣扎很长时间。 1ms 超时如何解决问题?这样请求就成功了? 我不能告诉你为什么它有效,但它确实有效!我想这只是一个错误!【参考方案2】:setTimeout(function()
ajaxRequest('save_mark','save_mark_completed',[60962,1284,5])
, 1);
这对我在页面加载后的第一次调用确实有效,但后来的调用再次开始显示访问被拒绝错误
【讨论】:
以上是关于IE 11 错误 - 访问被拒绝 - XMLHttpRequest的主要内容,如果未能解决你的问题,请参考以下文章
当ajax目标是localhost时,IE 10和11中的访问被拒绝
在 Angularjs 中的 IE10+ 中访问被拒绝 CORs 请求,需要跨源资源共享错误(信息?)