0

我从服务器获取 JSON,当我在浏览器中输入 url 时,我可以看到 JSON 数据。当我使用 curl 获取 JSON 时,我还可以看到数据。但是当我尝试在本地使用 html 页面来访问数据时,我得到了一个错误。我试过使用

$.support.cors = true;

但我仍然得到一个错误,无论如何我可以解决这个可能的跨域问题吗?

谢谢,马特

4

3 回答 3

0

其他答案提出了合适的替代方案(JSONP),但要解释为什么它不起作用;

的支持cors不是你可以打开的。这是浏览器和服务器必须支持的东西。

有关更多信息,请参见此处,但要总结一下:

  • 服务器需要发出一个Access-Control-Allow-Origin: *标头(或定制*为您希望允许的域)。
  • 您需要使用 Firefox 3.5、Safari 4、Chrome 3、IE 8 或 Opera 12。

您还可以查看API 文档jQuery.support.cors上的文档。

于 2012-07-02T10:46:41.430 回答
0

对跨域请求使用JSONP(带填充的 JSON) 。另请参阅jquery 插件以更轻松地处理 jsonp(甚至是基本错误处理)。这是一个很好的示例页面

于 2012-07-02T10:43:53.747 回答
0

如果服务器支持JSONP,那么您可以getJSON通过附加?callback=?到 url 来获取数据。

但如果响应只是 json 格式,例如:

{a: 1, b:2}

那么你不能使用ajax直接获取数据。一种解决方案是在您的服务器端制作一个代理,获取远程 json 数据,然后再次输出,以避免跨域问题。

于 2012-07-02T10:45:37.673 回答