我正在开发MusicBrainz API的前端,该前端可以搜索艺术家及其发行版本(特别是发行组)。当我尝试通过发布组各自的MusicBrainz ID(MBID)通过Axios库的Cover Art Archive从发行组的相应MusicBrainz ID(MBID)中查找某个封面时,我收到两个CORS错误:]
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://ia802802.us.archive.org/9/items/mbid-<any MBID>/index.json. (Reason: CORS request external redirect not allowed). Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://ia802802.us.archive.org/9/items/mbid-<any MBID>/index.json. (Reason: CORS request did not succeed).
到目前为止我所做的
[通过一些研究,我意识到Cover Art Archive不会保存自己的图像;相反,访问他们的API会导致重定向到Internet Archive API。因此,我直接进入IA API来查找所需的封面,因为我也可以在那里找到带有MBID的封面。这本身会导致CORS错误,但是我正在使用代理(带有Nuxt.js),这意味着我可以连接到Internet存档-至少在最初时没有问题。
重定向到动态且经常更改的目的地。因此,即使通过代理服务器,我也无法预测重定向的方向,也无法避免上述CORS错误-可以理解,Axios在此不使用它。proxy: { '/archive': { target: 'https://archive.org/', pathRewrite: { '^/archive': '' } } },
主要问题是IA随后将再次
我已经对此进行了广泛的研究,当我无法阻止重定向发生时,我无法找到如何防止出现这些错误的方法。
const getAlbumArtLocation = (release, index) => { this.$axios .get( '/archive/download/mbid-' + release.id + '/index.json' ) .then((res) => { const imageURL = res.data.images[0].image getAlbumArt(imageURL, index) }) .catch((err) => { // Try get another album artwork. console.error(err) index += 1 getAlbumArtCandidate(index) }) }
有关文件的代码可以找到here。
可以找到我的Nuxt配置here。
值得注意的是,这些错误仅出现在Firefox中,而不出现在其他基于Chromium的其他浏览器中。
我正在开发MusicBrainz API的前端,该前端可以搜索歌手及其作品(特别是发行组)。当我尝试从发行版中找到某种封面作品时...
正如评论中提到的tony19一样,动态重定向最好的选择是从服务器而不是直接从客户端获取资源,以避免CORS问题