Asp.net

需要 asp.net 身份驗證的影片在 iOS 10 上不起作用

  • December 30, 2019

在 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 無法播放我的影片?有什麼辦法可以解決嗎?

我的解決方案在這裡: https ://stackoverflow.com/a/40015409/7012293

基本上,如果會話 cookie 失去,您需要發送 403 禁止。Safari 將使用會話 cookie 重試。

我們在完全不同的技術堆棧(Linux、PHP、Moodle)上遇到了完全相同的問題。我們的會話 cookie 不會隨影片(和音頻)請求一起發送。

我們無法找到使 iOS 正常執行的方法,因此我們正在做一個緊急更新檔來解決問題,方法是檢測 iOS 10 並將其發送到不同的腳本來提供影片,傳遞一個安全加密的版本該腳本路徑中的會話 cookie 值,然後進行各種 hack,以便路徑中的值用於辨識該腳本中的會話(而不是不存在的 cookie)。此更改有效,但很複雜,具有較小的安全隱患,並且可能更難在不同的技術上實施。

這似乎是 iOS 10 的一個主要問題,所以我希望它可能會在未來的更新中得到修復。另外,我注意到雖然我們的會話 cookie 不包含在影片中,但還包括其他幾個 cookie!我實際上無法弄清楚哪些不是。(我嘗試的第一件事是使用定時到期而不是會話 cookie,但這也沒有與影片一起發送。)

引用自:https://stackoverflow.com/questions/39636103