【问题标题】:IE10 and IE11 SCRIPT5 Acess is Denied error when attempting a CORS request using XMLHttpRequest使用 XMLHttpRequest 尝试 CORS 请求时,IE10 和 IE11 SCRIPT5 访问被拒绝错误
【发布时间】:2017-02-27 23:52:57
【问题描述】:

我没有使用 jquery,只是普通的 javascript。我的网站托管在一个域上,假设它是 example.com

运行以下代码时:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.example2.com', true);

我收到一个错误:

SCRIPT5:访问被拒绝

此代码在其他浏览器(chrome、safari)中运行良好。

此外,这似乎只有在我的网站上运行时才会中断。当我从 IE 11 控制台运行该代码片段时,在网络上的其他站点上,不会发生错误。

我需要在托管脚本的网站上设置任何特定的标题吗?还是在加载脚本的网站上?

【问题讨论】:

  • “我是否需要在托管脚本的网站上设置任何特定的标头” 不需要。“或者在加载脚本的网站上” 是的。你确定你没有在 IE 兼容模式下运行吗?
  • 你是从http转到https吗?

标签: internet-explorer cors


【解决方案1】:

找出原因,这很奇怪,因为网站上有一些糟糕的遗留代码!

此元标记存在于标头中:

<meta http-equiv="X-UA-Compatible" content="IE=9" />

这告诉 IE 以 IE9 运行,而 IE9 具有不同的机制来执行跨域请求。

【讨论】:

    【解决方案2】:

    我可以按如下方式使用 XMLHttpRequest:

    var req = new XMLHttpRequest();
    req.open('GET', 'http://home.arcor.de/martin.honnen/cdtest/test2011060701.xml', false);
    req.send();
    var xml = new XMLSerializer().serializeToString(req.responseXML);
    console.log(xml);

    服务器上的目录配置为允许来自其他来源的任何请求,发送Access-Control-Allow-Origin:* 响应标头。

    我在 Windows 8.1 上使用 Firefox、Chrome 和 IE 进行了测试。

    【讨论】:

    • 在哪个服务器上?响应请求的服务器,还是托管发出请求的页面的服务器?
    • 响应请求的服务器。尝试使用我在浏览器中打开的开发人员工具发布的 sn-p 来检查请求和响应标头。
    • 问题是,如果请求从未到达该服务器,则 SCRIPT5 错误在调用“open”时会立即发生
    • 我发布的 sn-p 对你不起作用吗?使用哪些浏览器?它适用于 Windows 8.1 上的 Firefox 33、Chrome 39 和 IE 11。在您的问题中包含一个不起作用的 sn-p,以便我们可以尝试重现该问题。
    • sn-p 对我不起作用。它在 Windows 7 的 IE10 和 11 上。我在原始问题中发布了 sn-p。
    【解决方案3】:

    似乎我遇到了这个问题,因为 URL 图像错误,但它们在 Chrome 中显示正常,但在 IE 中显示不正常。 示例:

    http:////www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png
    

    在谷歌浏览器中显示(请复制并粘贴),但在我的 IE 中没有显示。

    原因:上面的 URL 实际上不仅仅包含两个斜杠。嘿,我的网址有错字!解决它!

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 1970-01-01
      • 2011-08-13
      • 2014-11-20
      • 2015-01-10
      • 2018-03-10
      • 1970-01-01
      • 2018-09-07
      相关资源
      最近更新 更多