本地与Staging环境DRM许可证的Content-Type不匹配问题排查求助
本地与Staging环境DRM许可证的Content-Type不匹配问题排查求助
大家好,我最近碰到个棘手的问题,想请社区的大佬们帮忙支支招。我做了个NestJS应用,负责下发DRM许可证数据给测试用的Shaka Player。本地环境下整个流程跑起来顺得不行,视频能正常播放,但一部署到Staging环境就出问题了——许可证响应的Content-Type居然变了:
- 本地环境:
application/octet-stream - Staging环境:
application/octet-stream;charset=UTF-8
就是多出来的这个;charset=UTF-8,导致Shaka Player直接判定许可证无效,播放完全卡壳。
我已经试过这些办法,但都没解决问题:
- 显式在响应里设置
res.setHeader('Content-Type', 'application/octet-stream'); - 按照建议给
@Res()装饰器加上了{ passthrough: false }配置
另外补充个背景:Staging服务器是部署在AWS ALB后面的,我对基础设施这块不太熟,怀疑是某个中间环节把Header给覆盖了,但完全摸不着排查方向。
给大家贴下我的控制器代码做参考:
@ApiBearerAuth() @Post('/acquireLicense') @UseGuards(PartnerEntitlementAuthGuard) async checkPartnerEntitlment( @Req() req: any, @Res({ passthrough: false }) res: Response ): Promise<Response<any, Record<string, any>>> { if (!req.contentId) { throw new BadRequestException('ContentId is required'); } const licenseKey = req.licenseKey === 'true'; const response = await this.entitlementService.getLicense( req.contentId, req.platform, req?.body, licenseKey, req.contentKey, req.action, req?.cdnDomain, ); res.setHeader('Content-Type', 'application/octet-stream'); return res.status(response.status).send(response.data); }
有没有大佬能指点下,可能是哪里出了问题?或者我该从哪些方向去排查?
内容来源于stack exchange
相关产品推荐
相关产品推荐

