2016-09-22 18 views
9

iOS'taki Safari'de 10 videom çalışmaz, yalnızca oynatma simgesini gösterir.Asp.net kimlik doğrulaması gerektiren video iOS 10'da çalışmaz.

Videoyu, kullanıcının oturumu açtığından ve videoya erişebildiğinden emin olmak için kontrol eden bir asp.net sunucusu aracılığıyla hizmet ediyorum. Sadece, iOS 10'da sunucu 401 Yetkisiz olarak yanıt verecektir!

Aşağıdaki kodla bazı testler yapıyorum, iOS 9'daki safari'nin ".ASPXAUTH" çerezini gönderdiğinin farkındayım, ancak iOS 10'da safari yok!

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

Neden safari videomu oynatamıyor? Çözmenin bir yolu var mı?

+3

Aynı burada. Benim durumumda, aynı zamanda Çerez/Oturum yoluyla bir ön kontrol de yapan bir LAMP yığın uygulamasıdır. Video yüklemeye geldiğinde iOS 10'un çerez göndermediği anlaşılıyor. Hala bir çözüm arıyorum. Bu oldukça yaygın kullanım durumunun üstesinden gelmenin hiçbir yolu olmadığına inanamıyorum. – Marco

+0

@FlyBy bunun için herhangi bir çözüm buldunuz mu? – Hurricane

+0

Geç cevap için özür dilerim. IOS, oturumcookies de dahil olmak üzere videoları yükleyemezsiniz. Aşağıdaki gibi çözdük: Kullanıcı başına benzersiz bir "ortam belirteci" oluşturun. Bu belirteç, iOS 10 kullanılırken yapılan her video isteğine GET parametresi olarak eklenmelidir. Video kaynaklarını istemek için kullanıcıları tanımlamak için medya belirtecini kullanın. Bu yolla videoların tamamen kamuya açık olması gerekmez ve en azından bir miktar "güvenlik" vardır. Bağlantı kopyalanabilir ve yapıştırılabilir, ancak en azından kullanıcı oturumu geçerli olduğu sürece geçerli olacaktır. – Marco

cevap

2

Çözümümün burada iOS'deki video oynatıcı tarafından geri okunamaz: https://stackoverflow.com/a/40015409/7012293

Temel olarak oturum tanımlama yoksa yasak bir 403 göndermek gerekir. Safari, oturum çerezi ile tekrar deneyecek.

+0

Bunu test ettim ve işe yarıyor! Safari'den ilginç davranışlar ... İyi bul, cevap için teşekkürler! – Mystogan

2

Tamamen farklı bir teknoloji yığınıyla (Linux, PHP, Moodle) tam olarak aynı sorunlara sahibiz. Oturum çerezimiz video (ve ses) istekleriyle birlikte gönderilmez.

iOS'u burada düzgün bir şekilde davranmanın bir yolunu bulamadık. Bu nedenle, iOS 10'u algılayarak ve videoyu sunmak için farklı bir komut dosyasına göndererek sorunu çözmek için bir acil durum düzeltme eki yapıyoruz. Bu komut dosyasının yolunun içinde oturum çerez değeri güvenli bir şekilde şifrelenmiş sürümü ve daha sonra çeşitli hack yapmak, böylece yoldan gelen değer, bu betik içindeki oturumu tanımlamak için kullanılır (varolmayan çerez yerine). Bu değişiklik işe yarar, ancak karmaşıktır, küçük güvenlik sonuçları vardır ve farklı teknolojiler üzerinde uygulanması zor olabilir.

Bu, iOS 10 ile ilgili önemli bir sorun gibi gözüküyor, dolayısıyla gelecekteki bir güncellemede düzeltilebileceğini umuyorum. Ayrıca, oturum çerezimizin videoya dahil edilmemesine rağmen, diğer bazı çerezlerin dahil edildiğini unutmayın! Aslında hangisinin olmadığını anlayamadım. (Denedim ilk şeylerden biri yerine oturum çerezinin bir zamanlı bitiminden kullanmaktı ama zaten bu da video ile gönderilen alamadım.)

+0

Katılıyorum, bu gerçekten iOS ile ilgili önemli bir sorun gibi görünüyor. Apple'a bir hata raporu gönderdim, bu yüzden küçük bir güncellemeyle düzelteceklerini umarak. – Mystogan

2

Çözüm burada bulunabilir şudur:

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

Çerez için bir son kullanma tarihi ayarlayın ve iOS 10'daki video oynatıcı çerezi okuyabilir. Bir sona tarihi olmayan Oturum çerezleri 10.

+0

İdeal olarak asp.net çerezlerinde bir son kullanma tarihi belirtmemek, onları kalıcı olmayan bir şekilde tutmak - ama yine de, büyük bir cevap için teşekkür ederim! Düzenleme: Bunu test ettim, ancak sorunu maalesef çözemedim. – Mystogan

İlgili konular