SPlayer icon indicating copy to clipboard operation
SPlayer copied to clipboard

网络错误,跨域

Open yanghuiqi opened this issue 7 months ago • 7 comments

是网页端还是客户端

网页

当前系统环境

win10

当前 Node.js 及 npm 版本

v14

当前版本

1.0

具体信息

Image 跨域错误

yanghuiqi avatar Apr 21 '25 03:04 yanghuiqi

相同问题,关掉音乐频谱之后刷新页面可以听一首歌,听完又会跨域,再次刷新又可以听……

很奇怪的是不登陆好像就没有问题。

s1eke avatar Apr 21 '25 06:04 s1eke

如果用网页端的话你确定NeteaseCloudMusicApi部署成功了吗? NCM-Api返回头会包含CORS的返回头的 然后你这个地址(music-api.ydev,tech)貌似并不是正常部署成功的NCM-Api,正常部署完应该有个这样的界面(下图)

Image 而且顺手测了下,并没有响应search的API,不知道是不是因为你限制了公网调用你的API。 如果想要确认的话,可以到网络选项卡里面找到被CORS拦截的请求(会标红),看看里面的返回头是否包含Access-Allow-Control-Origin,默认的值好像是* 正常来说如果去打开这个链接应该是会返回一大串json的,没有的话就是API部署不成功 如果打开了发现是有返回json文件的,可以试试nginx代理下,加返回头(Cloudflare Worker也可以)

tym2008 avatar Apr 21 '25 10:04 tym2008

相同问题,关掉音乐频谱之后刷新页面可以听一首歌,听完又会跨域,再次刷新又可以听……

很奇怪的是不登陆好像就没有问题。

你那个不是一样的问题。你是音乐文件CORS问题,这个是NCM-Api的CORS问题 在其它issue看你截图你是本地docker部署的,网易的文件本来就没有CORS的返回头,要关音乐频谱。 我Vercel+cloudflare pages部署的在公网也会这样,关了音乐频谱之后就一切正常了

tym2008 avatar Apr 21 '25 10:04 tym2008

相同问题,关掉音乐频谱之后刷新页面可以听一首歌,听完又会跨域,再次刷新又可以听…… 很奇怪的是不登陆好像就没有问题。

你那个不是一样的问题。你是音乐文件CORS问题,这个是NCM-Api的CORS问题 在其它issue看你截图你是本地docker部署的,网易的文件本来就没有CORS的返回头,要关音乐频谱。 我Vercel+cloudflare pages部署的在公网也会这样,关了音乐频谱之后就一切正常了

很奇怪,我关掉音乐频谱之后还是会有问题,每次刷新页面可以可以正常听一首歌,不知道为什么

Image

s1eke avatar Apr 22 '25 12:04 s1eke

相同问题,关掉音乐频谱之后刷新页面可以听一首歌,听完又会跨域,再次刷新又可以听…… 很奇怪的是不登陆好像就没有问题。

你那个不是一样的问题。你是音乐文件CORS问题,这个是NCM-Api的CORS问题 在其它issue看你截图你是本地docker部署的,网易的文件本来就没有CORS的返回头,要关音乐频谱。 我Vercel+cloudflare pages部署的在公网也会这样,关了音乐频谱之后就一切正常了

很奇怪,我关掉音乐频谱之后还是会有问题,每次刷新页面可以可以正常听一首歌,不知道为什么

Image

你需要对比两次的文件的返回头中的Access-Allow-Control-Origin字样,看看两个请求的返回头是不是不一样。示例:

Image

只看控制台是没法解释为什么你打开之后播放的第一首歌是能正常播放的。 可以看下https://github.com/imsyy/SPlayer/issues/381 这个也是docker的问题,但看不出来是API问题还是音频文件问题。 https://github.com/imsyy/SPlayer/issues/359 从这个来看,可能是docker镜像不是最新的?试试自己拉取最新的构建看看

tym2008 avatar Apr 23 '25 04:04 tym2008

相同问题,关掉音乐频谱之后刷新页面可以听一首歌,听完又会跨域,再次刷新又可以听…… 很奇怪的是不登陆好像就没有问题。

你那个不是一样的问题。你是音乐文件CORS问题,这个是NCM-Api的CORS问题 在其它issue看你截图你是本地docker部署的,网易的文件本来就没有CORS的返回头,要关音乐频谱。 我Vercel+cloudflare pages部署的在公网也会这样,关了音乐频谱之后就一切正常了

很奇怪,我关掉音乐频谱之后还是会有问题,每次刷新页面可以可以正常听一首歌,不知道为什么 Image

你需要对比两次的文件的返回头中的Access-Allow-Control-Origin字样,看看两个请求的返回头是不是不一样。示例:

Image

只看控制台是没法解释为什么你打开之后播放的第一首歌是能正常播放的。 可以看下#381 这个也是docker的问题,但看不出来是API问题还是音频文件问题。 #359 从这个来看,可能是docker镜像不是最新的?试试自己拉取最新的构建看看

解决了,确实是docker镜像的问题,官方的imsyy/splayer:v3.0.0-beta.1是12月12号打包的,然后修复跨域问题的commit是12月27号的,没有包括在内,我重新打了个镜像就ok了

s1eke avatar Apr 23 '25 07:04 s1eke