是否有任何方法可以完全从浏览器客户端访问这个JSON提要?

Is there any way to gain access to this JSON feed purely from a browser client?

本文关键字:访问 客户端 JSON 提要 浏览器 方法 任何 是否      更新时间:2023-09-26

我想为last.fm创建一个客户端。我的音乐"站"提要在这里,JSON格式:http://www.last.fm/player/station/user/skeftomai/mix.

然而,当我试图通过$.getJSON()访问它时,我得到

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

所以不幸的是我们最后有一个CORS问题。调频。我想解决这个问题。以下是我尝试过的一些方法:

  1. 此操作失败,并返回Access-Control-Allow-Origin错误。
  2. 一个iframe with document。域名设置为"www.last.fm"或"last.fm"。这个错误会导致SAMEORIGIN iframe错误。
  3. JSONP 。不幸的是,JSONP似乎不支持这个提要。
  4. 一个 <script>标签, src指向提要链接。$('#scriptTagId').html()是空的。
  5. 闪光。但不幸的是,它也有同样的跨源问题。
  6. Java applet。太重的话,每个人可能都没有安装JVM,并且它可能会遭受相同的跨源问题。

我很确定我可以摆脱一个web代理,其中客户端利用服务器大小的代理来检索提要…但我真的非常希望这是一个纯客户端应用,没有服务器端。我想把它托管在CDN (S3 + Cloudfront)上。

有什么办法吗?

不,你所要求的是不能单独使用浏览器解决。如果第三方站点不支持CORS或JSONP,您就没有选择了,除非您控制第三方站点或可以使用您自己的服务器(或任何第三方代理,如YQL)来获取数据。

下面是YQL:

$.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);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>