允许cors jQuery POST请求Express.js服务器上的Spotify API

Yam*_*ina 0 jquery spotify node.js cors express

为了在我的Web应用程序中获取Spotify API的访问令牌(由他们的Web授权流程指定),我了解到我必须提出POST请求.但是,当我这样做时,我得到了XMLHttpRequest 500 Error由于跨源问题.

我已经想出了如何允许CORS GET请求,但我不知道如何对POST请求执行相同的操作.此链接提供配置提示,但它保留实际路由GETPOST空白.

这是我的Express.js服务器的相关代码:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});



app.use(express.static(__dirname + '/public')); // looks in public directory, not root directory (protects files)

app.get('/', function(req, res) {
  // res.header("Access-Control-Allow-Origin", "*");
  // res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.send(__dirname + '\\index.html')
});

app.post('/', function(req, res) {
    res.send(req.body.spotify);
});
Run Code Online (Sandbox Code Playgroud)

(spotifyspotify-web-api-js节点模块).

我以前曾尝试将确切的代码复制app.getapp.post,但这导致服务器崩溃.

这是我程序的JavaScript文件中的一些代码,它打算POST在用户单击一个按钮后发送请求,该按钮将它们带到Spotify的授权路径的开头并批准登录:

$('#spotify').on('click', function() {
    $.support.cors = true;

    $.post("https://accounts.spotify.com/api/token");

      });
Run Code Online (Sandbox Code Playgroud)

(在这种情况下,spotify是HTML文件中按钮的ID)

在这种情况下,我该怎么做才能绕过CORS问题?我被困了几天.

Jos*_*rez 5

您可以在https://github.com/spotify/web-api-auth-examples上找到使用express执行Spotify身份验证流程的示例(请参阅authorization_code方法).

您无法获取发出客户端请求的访问令牌/api/token.您需要向其发送请求/authorize,该请求将重定向到您的请求,该请求redirect_uri本身将code使用访问令牌进行交换.

检查那个应该满足您需求的示例.