2013-03-08 32 views
3

我已經編寫了一個web應用程序,該服務通過http提供媒體文件以便在html5音頻元素中播放。服務的媒體文件之前,該服務器將檢查一個cookie與當前的PHP會話ID像這樣提供:OSX Safari/quicktime不發送包含媒體文件請求的cookie

PHPSESSID = 3u90bfmqepd14s4rvslmrv69d1

看來,IE /火狐/ Chrome的所有請求一起發送cookie對於音頻文件,但是在OSX Safari中,請求會使用不同的用戶代理字符串(包含'quicktime')並且不包含cookie。據推測,這是因爲quicktime處理瀏覽器的音頻播放功能,遺憾的是瀏覽器中設置的cookie不會被轉移。

我將不得不向客戶端發出一個臨時訪問代碼,該代碼可以在查詢字符串上傳遞以及對媒體文件的請求?或者有沒有更簡單的方法解決這個問題?

感謝您閱讀

回答

3

我通過實施替代認證流程解決了此問題。現在,每個媒體文件請求都會在查詢字符串上發送一個驗證令牌。此令牌在登錄時爲每個用戶生成,並且在會話期間有效。

如果設置了cookie或在查詢字符串上傳遞了有效的授權密鑰,則會提供媒體文件。

爲增加安全性考慮將針對客戶端IP服務器端的令牌並驗證請求來自媒體文件服務的客戶端

+0

這並不能真正解決問題之前生成的令牌相同的IP 。如果無法匹配會話,我們無法驗證登錄的用戶,這些標記化的鏈接是完全可移植且不安全的。我的鏈接有令牌,另外我需要通過限制交付給記錄的用戶使鏈接不可移植,從而正確保護內容。我相信這個問題打破了Safari的安全文件傳輸,是一個bug,需要儘快修復。也許QuickTime有一些我不知道的獨特的認證程序,但即使是這樣,誰可以在所有私人視頻客戶端上爲QT制定一個特殊情況的範圍, – ekerner 2015-05-15 09:22:46

+0

您可以通過及時生成並在極短的時間內將其過期而不是在會話期間保持有效,從而減輕共享令牌的人的負擔。 – PiX06 2015-05-15 13:20:27

+0

我不會限制時間,除了會話,下載速度各不相同。您的上述每個會話令牌解決方案非常好,也是我們現在最好的。我不是你的解決方案,我只是想指出Safari的事實,我們無法正確使用當前的Safari視頻播放和需要做的事情。 您的會話令牌修復是最好的解決方法,但仍允許任何具有該鏈接的人在鏈接所有者登錄時訪問視頻。也許可以使用本地swingers俱樂部視頻共享服務器,但我確定它不會在中央情報局清洗;) YouTube是做什麼的? – ekerner 2015-05-16 15:02:47

相關問題