Spotify APIsearch返回301

我正在学习节点,我试图使用Spotify API来search并返回一位艺术家。 页面加载和一切,但是当我尝试search,我得到这个错误

undefined:1 <html> ^ SyntaxError: Unexpected token < at Object.parse (native) at IncomingMessage.<anonymous> (/Users/edwinzhang/Node_Courses/spotify-recommend/server.js:23:25) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13) 

经过一番挖掘,我发现我得到这个错误的原因是由于:

 var searchReq = http.get(options, function(response) { response.on('data', function(chunk) { item += chunk; console.log(item); }); response.on('end', function() { console.log('end'); console.log(item); item = JSON.parse(item); emitter.emit('end', item); }); response.on('error', function() { emitter.emit('error'); }); }); 

response.on('data', function(chunk) ... ,chunk正在返回

 <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html> 

请求的path是(据说)api.spotify.com/v1/search?q=sam&limit=1&type=artist。 有谁知道我为什么得到这个错误? 谢谢!

所以我决定坐下来开启IntelliJ来看看你的问题。 我不知道为什么(节点不是我的主要开发平台),但是,这是一个HTTP / HTTPS的问题。 更精通节点的人将不得不解释。

如果我需要http并尝试拨打电话,我确实收到了您所看到的回复。 HTTP

如果我切换到包含https,它按预期工作。

HTTPS

不幸的是,我不知道它的“为什么”。 我已经在节点工作了一段时间,所以我有点生疏,但至less有一个可行的解决scheme。

跟进:

它似乎默认http不会遵循redirect。 您必须使用请求模块,而且您可以设置一个选项来指定遵循redirect。

你如何遵循Node.js中的HTTPredirect?