我正在使用 iOS AVPlayer 播放 HLS 流。在 HLS 会话开始时,当我收到 index.m3u8 URL 以响应创建 AVPlayerItem 时,响应还设置了基于会话的身份验证所需的 cookie。假设这个 cookie 名称是 myCookie,它是为域“.myhost.com”创建的。现在一切正常,播放器发送 myCookie 以从 xxx.myhost.com/stream 下载 ts 块。随着播放的进行,播放列表最终会更新,播放器会下载更新的播放列表。有时更新的播放列表包含一个 ts 块,可以从另一个主机的 URL 下载。因此,在尝试使用不同的主机播放块时,播放器请求 xxx.someotherhost.com 下载块。这会导致响应 302 重定向到 location:xxx-abc.myhost.com/ads。显然 AVPlayer 没有 t 在从 someotherhost.com 请求块时发送 myCookie,因为它与 myCookie 的域不匹配。但问题是重定向到 xxx-abc.myhost.com/ads 后,即使重定向 URL 的域也是与 cookie 域匹配的 myhost.com,AVPlayer 也不会发送 myCookie。
请注意,重定向 URL 域与原始流域相同,也与 myCookie 的域相同。由于 AVPlayer 在重定向后不发送 cookie 来下载块,因此 ts 块请求失败并显示 403 Forbidden (No Token)
我在这里做错了什么,或者这看起来像 iOS AVPlayer 中的一个错误?
有没有办法解决这个问题?请分享你的想法。