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);
关键变化说明
- API完全替换:
extend("RequestModifier")被addRequestFilter()替代,不再需要返回包含特定方法的对象,直接传入处理请求的回调函数即可。 - 操作对象变更:不再直接操作XHR实例,而是操作DashJS封装的
request配置对象,请求头通过request.headers这个键值对集合来修改。 - 请求类型区分(可选):如果只需要给特定类型的请求加头(比如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
相关产品推荐
相关产品推荐

