【问题标题】:Failed to execute 'send' on 'XMLHttpRequest' Syncronous无法在“XMLHttpRequest”同步上执行“发送”
【发布时间】:2016-01-12 03:23:01
【问题描述】:

我正在尝试通过 JS 使用简单的 get 请求连接到谷歌,但它似乎总是给我同样的错误。

“无法在 'XMLHttpRequest' 上执行 'send':无法加载 'http://google.com'。”

任何线索为什么会发生这种情况?相关代码如下。

        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", "http://google.com", false);
        try {
            xmlHttp.send();
        } catch (err) {
            alert("EXCEPTION: " + err.message);
        }
        alert("here's the result of the get: " + xmlHttp.responseText);

【问题讨论】:

  • 试试“www”,我的意思是http://www.google.com
  • 如果您异步运行请求并查看控制台,您会看到更有用的错误消息:XMLHttpRequest cannot load http://google.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource.
  • 提琴手是你的朋友。它甚至向远程服务器发出请求吗?
  • @SudeepJuvekar 你的小提琴获取资源https://fiddle.jshell.net/_display/www.google.com,而不是http://www.google.com

标签: javascript http


【解决方案1】:

这只是一个跨域权限失败,由于same origin policy。如果您异步运行相同的请求并查看控制台,您会看到更有用的错误消息:

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

这是因为只有在来自http://www.google.com 的页面上运行的脚本才能读取来自http://www.google.com 的资源。如果获取的资源提供了适当的 CORS 标头(例如,Access-Control-Allow-Origin),您将不会看到此错误。 (但是,http://www.google.com 不提供此类标头)。

【讨论】:

    猜你喜欢
    • 2015-12-28
    • 2019-04-23
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多