从Cover Art Archive(archive.org)API获取专辑插图会由于重定向而导致CORS错误

问题描述 投票:0回答:1

我正在开发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存档-至少在最初时没有问题。

proxy: {
  '/archive': {
    target: 'https://archive.org/',
    pathRewrite: {
      '^/archive': ''
    }
  }
},

主要问题是IA随后将再次

重定向到动态且经常更改的目的地。因此,即使通过代理服务器,我也无法预测重定向的方向,也无法避免上述CORS错误-可以理解,Axios在此不使用它。

我已经对此进行了广泛的研究,当我无法阻止重定向发生时,我无法找到如何防止出现这些错误的方法。

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的前端,该前端可以搜索歌手及其作品(特别是发行组)。当我尝试从发行版中找到某种封面作品时...

axios cors nuxt.js musicbrainz
1个回答
0
投票

正如评论中提到的tony19一样,动态重定向最好的选择是从服务器而不是直接从客户端获取资源,以避免CORS问题

© www.soinside.com 2019 - 2024. All rights reserved.