fix(getOnlineUrl): 修复网页端登录后获取url的CORS问题 by MoeFurina · Pull Request #472 · imsyy/SPlayer
为什么要修改这里?
简单来说,CORS(跨域资源共享)是浏览器的一种安全机制。它要求网站A想从网站B加载资源时,网站B的服务器必须明确表示“我允许网站A来拿我的资源”。如果服务器没有给出这个“许可”,浏览器就会拦截这个请求。
网易云音乐的音乐链接有个特点:
-
未登录时获取的链接(通常是 m801 或 m701 开头的域名)是配置好了这个“许可”的。
-
登录后获取的链接(通常是 m804 或 m704 开头的域名)反而没有配置这个“许可”。
这就导致了一个问题:当我们直接使用登录后的链接去请求音乐时,浏览器会因为安全规则(CORS)而阻止。
解决方案很简单:
既然未登录的链接有“许可”,而登录前后的链接只有域名不同,那我们只需要把登录后链接里的域名(m804/m704)替换成未登录的域名(m801/m701)就可以了。这样,我们就能绕过浏览器的CORS限制,正常播放音乐。