需要asp.net身份验证的视频无法在iOS 10上运行

时间:2016-09-22 10:05:00

标签: asp.net cookies cors html5-video ios10

在iOS 10中的Safari上,我的视频不起作用,只显示播放图标。

我通过asp.net服务器提供视频,该服务器会检查以确保用户已登录并可以访问该视频。只有在iOS 10上,服务器才会响应401 Unauthorized!

使用下面的代码进行一些测试,我发现iOS 9上的safari发送了“.ASPXAUTH”cookie - 但iOS 10上的safari却没有!

<video crossorigin="use-credentials" controls autoplay="autoplay">
    <source src="/Server/GetVideo.ashx?id=123"/>
</video>

为什么safari无法播放我的视频?有什么办法可以解决吗?

3 个答案:

答案 0 :(得分:2)

我们在完全不同的技术堆栈(Linux,PHP,Moodle)上遇到了完全相同的问题。我们的会话cookie不会随视频(和音频)请求一起发送。

我们无法找到让iOS在这里正常运行的方法,所以我们正在做一个紧急补丁,通过检测iOS 10并将其发送到另一个脚本来提供视频来解决问题,通过此脚本路径中的会话cookie值的安全加密版本,然后执行各种黑客操作,以便路径中的值用于从该脚本中识别会话(而不是不存在的cookie)。这种变化有效,但很复杂,对安全性影响很小,并且可能难以在不同的技术上实施。

这似乎是iOS 10的一个主要问题,所以我希望它可能会在未来的更新中修复。此外,我注意到虽然我们的会话cookie不包含在视频中,但还包括其他几个cookie!我实际上无法弄清楚哪些不是。 (我尝试过的第一件事就是使用timed-expiry而不是session cookie,但这并没有随视频一起发送。)

答案 1 :(得分:2)

可在此处找到解决方案:

HTML5 video/audio player on mobile Safari (iOS 7 & iOS 10) excludes cookies

为Cookie设置过期日期,iOS 10中的视频播放器可以回读Cookie。 iOS 10中的视频播放器无法回读没有过期日期的会话cookie。

答案 2 :(得分:2)

我的解决方案在这里: https://stackoverflow.com/a/40015409/7012293

如果缺少会话cookie,基本上你需要发送403 forbidden。 Safari将使用会话cookie重试。