如何在AngularJS的jPlayer函数中添加请求头?
jPlayer添加请求头无效的解决办法
你直接在setMedia配置里加headers参数是没用的——jPlayer的官方API根本没提供这个配置项,所以这个参数会被忽略。
要实现带自定义请求头加载音频,得换个思路:通过fetch先带请求头获取音频的Blob资源,再把Blob URL传给jPlayer。具体代码如下:
const httpHeader = { 'authorization': '123445' }; if (audioUrl) { fetch(audioUrl, { headers: httpHeader }) .then(response => { if (!response.ok) throw new Error('请求失败'); return response.blob(); }) .then(blob => { const blobUrl = URL.createObjectURL(blob); $(this).jPlayer('setMedia', { mp3: blobUrl, duration: parseInt(duration, 10) }); // 可选:在jPlayer销毁时释放Blob URL,避免内存泄漏 $(this).on($.jPlayer.event.destroy, () => { URL.revokeObjectURL(blobUrl); }); }) .catch(err => { console.error('加载音频出错:', err); }); }
注意事项
- 这种方式依赖HTML5的
fetch和BlobAPI,现代浏览器都支持,老旧浏览器可能需要兼容处理。 - 若音频资源在跨域域名下,服务器需配置CORS允许自定义的
authorization请求头,否则会出现跨域错误。 - 务必在jPlayer销毁时调用
URL.revokeObjectURL释放Blob URL,防止内存泄漏。
如果你的项目还在使用jPlayer的Flash模式(当前已不推荐),Flash加载音频时设置请求头的逻辑与HTML5完全不同,且jPlayer未封装相关功能,建议直接切换到HTML5模式。
内容的提问来源于stack exchange,提问作者Lakshmi N
相关产品推荐
相关产品推荐

