客户端凭据流与curl一起使用,但不在浏览器中

时间:2017-01-02 18:10:19

标签: javascript curl spotify

我正在开发Spotify应用程序,我想获得令牌。

我关注Client Credentials Flow并使用curl一切正常:

$ curl -H "Authorization: Basic YjU4Y...llYTQ=" \
-d grant_type=client_credentials \
https://accounts.spotify.com/api/token
# Response:
# {
#   "access_token":"BQD3u...W4iJA",
#   "token_type":"Bearer",
#   "expires_in":3600
# }

这里有我的HTML文件的Javascript代码,我尝试得到相同的结果:

var url = "https://accounts.spotify.com/api/token";
var authentication = "YjU4Y...llYTQ=";
var params = { grant_type: "client_credentials" };
var auth = "Basic " + authentication;

$.ajax({
  url: url,
  type: 'POST',
  dataType: 'json',
  headers: {
      'Authorization' : auth,
      'Access-Control-Allow-Origin': '*'
  },
  data: params,
  success: function(data) {
      console.log('success', data);
  }
});

但是,我收到以下错误:

  

XMLHttpRequest无法加载https://accounts.spotify.com/api/token。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点'null'访问。

我做错了什么?

有没有办法使用Javascript从静态HTML文件中使用Spotify API?

1 个答案:

答案 0 :(得分:2)

无。除非服务器专门授权,否则浏览器不允许使用CORS。在您的情况下,您不控制服务器,因此您只有一个选择 - 破解浏览器。使用适用于Firefox和Chrome的插件轻松完成。搜索适用于Firefox的CORS Everywhere。有一个用于镀铬也称为访问控制允许*,或类似的东西。

相信我......我花了一周时间尝试不同的REST API。尝试js fetch等。你必须使用插件破解浏览器。