Asp.net
需要 asp.net 身份驗證的影片在 iOS 10 上不起作用
在 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,但這也沒有與影片一起發送。)