有没有办法纯粹从浏览器客户端访问此JSON提要?

时间:2015-10-02 21:13:04

标签: javascript json ajax cross-domain cors

我想为last.fm创建一个客户端。我的音乐“电台”Feed在这里,采用JSON格式:http://www.last.fm/player/station/user/skeftomai/mix

但是,当我尝试通过$.getJSON()访问此内容时,我会

  

请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://my.exampledomain.com”访问。

很遗憾,我们在last.fm结束时遇到了CORS问题。我想解决这个问题。以下是我尝试过的一些事情:

  1. AJAX 即可。这会因Access-Control-Allow-Origin错误而失败。
  2. iframe ,其中document.domain设置为“www.last.fm”或“last.fm”。这会因SAMEORIGIN iframe错误而失败。
  3. JSONP 即可。不幸的是,这个Feed似乎不支持JSONP。
  4. <script>代码,其中src指向Feed link。很遗憾,$('#scriptTagId').html()是空的。
  5. Flash中。但不幸的是,这个问题也存在同样的问题。
  6. Java applet。太重了,每个人都可能没有安装JVM,并且可能会遇到相同的跨域问题。
  7. 我很确定我可以使用Web代理,客户端利用服务器大小的代理来检索提要...但我真的,真的希望这是一个没有服务器的纯客户端应用程序-侧。我想在CDN(S3 + Cloudfront)上主持这个。

    有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

不,你所要求的是单独使用浏览器无法解决的问题。如果第三方网站不支持CORS或JSONP,除非您控制第三方网站或使用您自己的服务器(或任何第三方代理,如YQL)获取,否则您将无法使用选项数据。

这是YQL:

&#13;
&#13;
$.getJSON('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D\'http%3A%2F%2Fwww.last.fm%2Fplayer%2Fstation%2Fuser%2Fskeftomai%2Fmix\'&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=?', function (response) {
    console.log(response.query.results.json);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;