1

我无法从 IE 中的 JSON 提要获取数据。

这是测试。它在 FF、Chrome、Safari 中发出警报,但在 IE 中没有:

function do_something(data){
    alert(data);
}

$(document).ready(function() {
    $.getJSON('https://www.mec.ca/api/v1/stores/1', do_something);
});

​这是小提琴:http: //jsfiddle.net/upksp/

对于看似相关的问题,我尝试了以下解决方案,但没有成功:

我不禁认为这可能是标题的问题,但对它们了解得不够多,无法诊断。我在同一页面上成功使用了 JSONP,没有任何问题,而且我没有看到任何冲突。帮助!


注意:对于我正在处理的代码,API 将与请求它的脚本位于同一域 (1)。但是对于测试,它们将具有不同的子域(2),例如www.domain.comenvironment.domain.com。我假设(2)会有问题,但(1)会正常工作吗?

4

1 回答 1

1

由于浏览器安全原因,您不能从一个来源向另一个来源发出请求(例如 jsfiddle.net 到www.mec.ca)。近年来,浏览器开始使用 CORS(跨域资源共享)来规避这一点。这允许浏览器向另一个域发出请求,只要该服务器 ( www.mec.ca ) 配置为接受它们。您可以在响应标头中检查这一点。对于您的网址 ( https://www.mec.ca/api/v1/stores/1 ),CORS 已启用。你可以在响应标题中看到这一行。Access-Control-Allow-Origin: *. 这意味着允许来自任何域的请求 (*)

HTTP/1.1 200 OK
Date: Sat, 24 Nov 2012 01:19:23 GMT
Server: Apache
Content-Language: en
Access-Control-Allow-Origin: *
X-Powered-By: Servlet/2.5 JSP/2.1
Vary: Accept-Encoding,User-Agent
Transfer-Encoding: chunked
Content-Type: application/json

由于 IE 在实施 CORS 标准方面落后,直到 IE10 才加入 IE。因此,您的小提琴将无法在以前版本的 IE 中工作。

于 2012-11-24T01:25:43.703 回答