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

DashJS 5.x.x版本加载.mpd与.m4s文件时自定义请求头插入失效问题求助

解决DashJS 5.x.x中自定义请求头不生效的问题

我之前升级DashJS到5.x版本时也踩过这个坑!原来的RequestModifier扩展方式在5.x里已经被彻底重构了,官方换成了更灵活的**请求过滤器(RequestFilter)**机制,这就是你的4.x代码完全失效却没有报错的核心原因。

正确的实现方式

把你原来的extend("RequestModifier")代码段替换成下面的请求过滤器写法:

this.#dash = dashjs.MediaPlayer().create();

// 添加自定义请求过滤器
this.#dash.addRequestFilter((request) => {
    // 给所有请求添加自定义头,也可以根据请求类型做针对性处理
    console.log("Header has been set for:", request.url);
    request.headers["Authorization"] = "Bearer YOUR_TOKEN";
    request.headers["X-Custom-Header"] = "MyValue";
    
    // 如果需要修改请求URL,直接修改request.url即可
    // request.url = request.url.replace("old-domain", "new-domain");
    
    return request;
});

this.#dash.initialize(video, "https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd", false);

关键变化说明

  1. API完全替换:extend("RequestModifier")被addRequestFilter()替代,不再需要返回包含特定方法的对象,直接传入处理请求的回调函数即可。
  2. 操作对象变更:不再直接操作XHR实例,而是操作DashJS封装的request配置对象,请求头通过request.headers这个键值对集合来修改。
  3. 请求类型区分(可选):如果只需要给特定类型的请求加头(比如MPD文件或媒体分片.m4s),可以通过request.type精准判断:
    if (request.type === dashjs.RequestType.MPD || request.type === dashjs.RequestType.MEDIA_SEGMENT) {
        // 仅给MPD和媒体分片添加自定义头
        request.headers["Authorization"] = "Bearer YOUR_TOKEN";
    }
    

验证方法

修改代码后,打开浏览器开发者工具的「网络」面板,刷新页面后查看MPD和.m4s请求的「请求头」区域,确认Authorization和X-Custom-Header是否已被正确添加。

内容的提问来源于stack exchange,提问作者Khởi Linh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 10:32:30