ios - AVPlayer 在 302 重定向后无法为同一域发送 cookie

标签 ios objective-c avplayer http-live-streaming nshttpcookie

我正在使用 iOS AVPlayer 播放 HLS 流。在 HLS session 开始时,当我收到 index.m3u8 URL 以响应创建 AVPlayerItem 时,响应还设置了基于 session 的身份验证所需的 cookie。假设这个 cookie 名称是 myCookie,它是为域“.myhost.com”创建的。现在一切正常,播放器发送 myCookie 从 xxx.myhost.com/stream 下载 ts block 。随着播放的进行,播放列表最终会更新,播放器会下载更新后的播放列表。有时,更新的播放列表包含一个 ts block ,可以从另一个主机的 URL 下载。因此,当尝试与不同的主机播放 block 时,播放器请求 xxx.someotherhost.com 下载 block 。这导致响应 302 重定向到 location:xxx-abc.myhost.com/ads。显然 AVPlayer 在从 someotherhost.com 请求 block 时不会发送 myCookie,因为它与 myCookie 的域不匹配。但问题是在重定向到 xxx-abc.myhost.com/ads 之后,AVPlayer 不会发送 myCookie,即使重定向 URL 的域也是与 cookie 的域匹配的 myhost.com。

请注意,重定向 URL 域与原始流域相同,也与 myCookie 的域相同。由于 AVPlayer 在重定向后不发送 cookie 来下载 block ,因此 ts block 请求失败并显示 403 Forbidden (No Token)

我是不是做错了什么,或者这看起来像是 iOS AVPlayer 中的错误?

有没有办法解决这个问题?请分享您的想法。

最佳答案

制作一个演示问题的示例,提交错误报告。然后创建一个提及 Radar 的 DTS 事件,并且您正在寻找解决方法来解决您认为是错误的问题。

这开启了两种可能性:

  • 工程师可以确认错误 - 如果未知,他们会修复它,如果是重复的,您可以请求原始状态信息
  • DTS 知识渊博,有能力向实际的 AV 工程师询问解决方法

这样一来,您就可以减少查找可能得不到任何其他答案的地方的时间。

关于ios - AVPlayer 在 302 重定向后无法为同一域发送 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16992692/

相关文章:

ios - 如何处理 AVURLAsset 中的 HTTP 基本身份验证?

android - Flutter - 垂直拖动时更改高度

ios - 将 NSString 转换为字符数组

ios - 创建 Swift AVAudioPlayer 错误

ios - 如何使用 JSONModel 解析带单引号的 JSON?

ios - UISlider 停止时如何触发方法?

ios - AVplayer 不会在锁屏或后台播放来自 url 的音频

ios - 如何添加过滤器以从 iOS 中录制的音频文件中去除噪音

使用 GL_TEXTURE_2D 的 iOS YUV 420v 在 OpenGL 着色器中显示错误的颜色

ios - 停止后如何在 TestFlight 中继续测试