You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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和Blob API,现代浏览器都支持,老旧浏览器可能需要兼容处理。
  • 若音频资源在跨域域名下,服务器需配置CORS允许自定义的authorization请求头,否则会出现跨域错误。
  • 务必在jPlayer销毁时调用URL.revokeObjectURL释放Blob URL,防止内存泄漏。

如果你的项目还在使用jPlayer的Flash模式(当前已不推荐),Flash加载音频时设置请求头的逻辑与HTML5完全不同,且jPlayer未封装相关功能,建议直接切换到HTML5模式。

内容的提问来源于stack exchange,提问作者Lakshmi N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:31:13