【问题标题】:SEC7118: XMLHttpRequest CORS - IE Console messageSEC7118:XMLHttpRequest CORS - IE 控制台消息
【发布时间】:2014-08-30 01:39:01
【问题描述】:

我正在使用 CORS POST 请求,并按照给定的@http://www.html5rocks.com/en/tutorials/cors/ 处理所有事情

服务器将响应标头设置为: 'Access-Control-Allow-Origin':'*' 我可以在 IE 开发者工具中看到这个标头值。

但在 IE10 浏览器上,我看到控制台消息为“SEC7118: XMLHttpRequest for http:// required Cross Origin Resource Sharing (CORS)。

当我在微软网站上查看时,它给出了以下解释。

http://msdn.microsoft.com/en-us/ie/dn423949(v=vs.94).aspx

SEC7118

说明: “[URL] 的 XMLHttpRequest 需要跨域资源共享 (CORS)。” 向与您的页面域不同的域发出了 XMLHttpRequest。这要求服务器在其响应标头中返回“Access-Control-Allow-Origin”标头,但没有返回。

建议的修复: 服务器必须支持 CORS 请求并随资源返回适当的“Access-Control-Allow-Origin”标头。有关响应标头中 CORS 的更多信息,请参阅 IE10 中 XHR 的 CORS。

问题:

  1. 我想知道这个控制台消息是否是错误??
  2. 这会导致任何故障吗??
  3. 为什么在将响应标头“Access-Control-Allow-Origin”的值设置为“*”后仍收到此消息??
  4. “Access-Control-Allow-Origin”值是否必须是 IE10 可以工作吗?我知道 * 不是一个很好的选择,但是 IE 需要准确的原产地名称??

我在这些图片中隐藏了 URL 和 cookie 的详细信息。

【问题讨论】:

  • 您能分享您从 IE F12 开发者面板看到的客户端代码和标头吗?
  • 您能否包括在该面板中看到的 response 标头?
  • 请求来自的文档的 URL 是什么? (最重要的是,该 URL 的方案部分是什么?)
  • 你在其他浏览器中测试过这个吗?它们可能会为您提供更多有用的错误消息。
  • 只是检查 - 这是对 Ajax 请求的响应,而不是初始 HTML 文档,不是吗?

标签: javascript ajax internet-explorer cors internet-explorer-10


【解决方案1】:

来自MSDN

安全错误代码的格式为 SEC7xxx [In IE]

关于 SEC7118:

向与您页面的域不同的域发出了 XMLHttpRequest。这要求服务器在其响应标头中返回“Access-Control-Allow-Origin”标头,但没有返回。

注意此错误代码已在 Windows 10 的 IE11 中删除。它仍保留在 Windows 8.1 和 Windows 7 的 IE11 中。

所以从 IE 的角度来看,它在技术上被视为一个错误,但肯定不是一个错误(因此它会消失)。 Access-Control-Allow-Origin 在资源上设置,但不一定与请求一起发回。如果指定的资源没有Access-Control-Allow-Origin:*(或域),则该资源将无法访问,服务器可能会返回 503 或 404,您将在控制台中看到类似于以下内容的真实错误消息:

XMLHttpRequest 无法加载 http://example.com/。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://blog.example.com' 不允许访问。

【讨论】:

  • “设置在资源上但不一定发回”是什么意思?
【解决方案2】:

当 CORS 设置正确时,我遇到了 SEC7118。我使用网络调试器验证了请求以状态 200 完成。因此,如果您的应用程序正常运行,您可以忽略此消息。

【讨论】:

  • 是的.. 但想知道这种行为背后的确切原因是什么
  • 可能只是在 IE 中实现不佳。其他浏览器似乎没有这个问题,并且它并没有阻止任何东西的工作;这只是一个虚假的警告信息。
【解决方案3】:

我在 IE11 中看到过这个错误:

SEC7118:用于 http:// 的 XMLHttpRequest 需要跨域资源共享 (CORS)

将以下内容添加到我的.htaccess 修复它:

<IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
        <FilesMatch "\.(cur|gif|ico|jpe?g|png|svgz?|webp)$">
            SetEnvIf Origin ":" IS_CORS
            Header set Access-Control-Allow-Origin "*" env=IS_CORS
        </FilesMatch>
    </IfModule>
</IfModule>

参考: https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image

【讨论】:

    【解决方案4】:

    我也有同样的问题。它与 Internet Explorer 对第三方 cookie 的处理有关。您可以通过进入“工具”>“Internet 选项”然后选择“隐私”选项卡来解决此问题。如果您将设置更改为“接受所有 Cookie”,您将不再看到该消息。

    更安全的方法是点击“站点”按钮并允许来自您站点的 url 的 cookie。

    【讨论】:

    • 这并不能真正帮助网站开发人员。不能要求所有网站访问者更改他们的隐私设置。
    • true 但这只能修复您的机器.. 不能修复您的网页问题
    • 赞成,因为这实际上是最好的答案,即使它不是 OP 所希望的......
    • 尝试了 IE 设置中所有可能的设置,但没有任何改变。
    猜你喜欢
    • 1970-01-01
    • 2013-05-29
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多