为了在我的网络应用程序中获取 Spotify API 的访问 token (由其网络授权流程指定),我了解到我必须发出 POST
请求。但是,当我这样做时,由于跨源问题,我收到 XMLHttpRequest
500 Error
。
我已经弄清楚如何允许 CORS GET
请求,但不确定如何对 POST
请求执行相同的操作。 This link提供配置提示,但将 GET
和 POST
的实际路由留空。
这是我的 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);
});
(spotify
是 spotify-web-api-js
Node 模块)。
我之前曾尝试将 app.get
的确切代码复制到 app.post
中,但这导致服务器崩溃。
这是我程序的 JavaScript 文件中的一段代码,旨在在用户单击按钮后发送 POST
请求,将用户带到 Spotify 授权路径的开头并批准登录:
$('#spotify').on('click', function() {
$.support.cors = true;
$.post("https://accounts.spotify.com/api/token");
});
(在本例中,spotify
是 HTML 文件中按钮的 ID)
在这种情况下我应该怎么做才能绕过 CORS 问题?我已经困惑了好几天了。
最佳答案
您可以在https://github.com/spotify/web-api-auth-examples上找到使用express与Spotify执行身份验证流程的示例。 (请参阅 authorization_code
方法)。
您无法通过向 /api/token
发出客户端请求来获取访问 token 。您需要向 /authorize
发出请求,该请求将重定向到您的 redirect_uri
,后者本身将使用访问 token 交换 code
。
检查该示例,它应该可以满足您的需求。
关于jquery - 允许前端 JavaScript POST 请求到 https ://accounts. spotify.com/api/token 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188989/