JSON HTTP请求在Mac OSX上不起作用[重复]

Posted

技术标签:

【中文标题】JSON HTTP请求在Mac OSX上不起作用[重复]【英文标题】:JSON HTTP Request Not Working on Mac OSX [duplicate] 【发布时间】:2015-09-01 06:42:29 【问题描述】:

我一直在 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 我的错,读得太快了 【参考方案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

以上是关于JSON HTTP请求在Mac OSX上不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

非级联类型的菜单栏项目在 Mac OSX 的 Tkinter 上不起作用

Excel VBA Application.Visible = false 在 Mac OSX 上不起作用

JSON.parse() 在 Linux 和 Mac 上不起作用

C# Environment.GetEnvironmentVariable(...) 在 OSX 上不起作用

sed 分支在 OSX 上不起作用:未定义标签

CBPeripheralManager startAdvertising 在 OS X yosemite 上不起作用