我现在有个需求,就是在网页中播放歌曲。歌曲资源是放在七牛上的,并且是私有资源。每次客户端需要播放音乐的时候都需要先向服务器发送请求,并带上认证信息,然后会通过302跳转到七牛服务器请求数据。
但现在的问题来了,在桌面版chrome里可以播放歌曲,手机端chrome却不行。
桌面chrome版本为 Chromium 32.0.1700.107 Ubuntu 13.10
手机chrome版本为 Chrome 31.0.1650.59
桌面chrome请求结果
首先会向/api/muzzik/music
发送请求,然后会收到302跳转,跳到七牛服务器,七牛会返回数据,并设置head Content-Type:audio/mpeg
。
手机chrome请求结果
手机端在302跳转之后直接就Canceled
,查看请求信息,没发现服务器返回任何数据。
监听audioElement的error事件之后,发现错误原因是MEDIA_ERR_SRC_NOT_SUPPORTED
,但它没有向服务器请求过数据,怎么就知道返回的数据就不支持了呢?而且我也试过直接将链接输入到地址栏里,可以出现播放器窗口并可以播放,为什么设置成audio的src就不行了呢?
而且最奇怪的是,用手机访问虾米,查看网络记录也显示相关的音频文件被cancel掉了,为什么它就可以播,而且没有提示错误??
自己解决了问题。
原来手机版的chrome,在使用audio,video标签的时候,src不支持302跳转。