【问题标题】:JSON HTTP Request Not Working on Mac OSX [duplicate]JSON HTTP请求在Mac OSX上不起作用[重复]
【发布时间】:2023-03-06 07:43:01
【问题描述】:

我一直在 JS 文件中使用 HTTP 请求从本地 JSON 文件中检索信息。它在我的 Firefox 和 Chrome 中的 Windows 计算机上运行良好,但是在 Mac 上运行时,Chrome 调试器会抛出一个错误,提示 Cross origin requests are only supported for HTTP... 我的HTTP请求代码如下:

var xhr = new XMLHttpRequest();

xhr.open("GET", "sample.json", true);

xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
        var status = xhr.status;

        if ((status >= 200 && status < 300) || status === 305) {
            var myData = JSON.parse(xhr.responseText);
            window.myData = myData;
            showAll(myData);
        }
    }
};

xhr.send(null);

有什么想法吗?谢谢

【问题讨论】:

  • 是的,这是一个安全问题。您需要在服务器上运行它,并且此类请求不支持file:/// 协议!
  • @Lau — 当然不是。没有 HTTP 就无法发送 HTTP 标头。
  • “有什么想法吗?” — 安装 HTTP 服务器。
  • @Quentin 我的错,读得太快了

标签: javascript html json macos xmlhttprequest


【解决方案1】:

是的,这是一个安全问题。您需要在服务器上运行它,并且此类请求不支持file:/// 协议! AJAX 是一种正确的 HTTP 请求响应类型的概念,您不能使用 file:/// 协议或使用不同的协议进行事务处理。

【讨论】:

  • 好的,但是为什么我们都使用 Chrome 时它在 Windows 上运行良好?
  • 您使用的浏览器可能很旧。新版 Chrome 和 Firefox 在 Stable 频道上对这类 CORS 的要求非常严格。
  • Mac 有 100 多个免费的 HTTP 服务器。使用MAMP、AMPPS、XAMPP等:D
  • 会不会是因为,在 Windows 上,我使用 NetBeans 在服务器上运行项目,而在 Mac 上,我们只是将 HTML 文件直接拖到浏览器中?
  • 你去!是的。默认情况下,NetBeans 在 Apache HTTPD 服务器或 TomCat 服务器上运行! :D
猜你喜欢
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多