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

本地与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直接判定许可证无效,播放完全卡壳。

我已经试过这些办法,但都没解决问题:

  1. 显式在响应里设置res.setHeader('Content-Type', 'application/octet-stream');
  2. 按照建议给@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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:33:00