2016-09-22 20 views
9

Trên Safari trong iOS 10 video của tôi không hoạt động, chỉ hiển thị biểu tượng phát.Video yêu cầu xác thực asp.net không hoạt động trên iOS 10

Tôi phân phát video qua máy chủ asp.net, kiểm tra để đảm bảo người dùng đã đăng nhập và có quyền truy cập vào video. Chỉ, trên iOS 10 máy chủ sẽ trả lời với 401 trái phép!

Thực hiện một số thử nghiệm với mã bên dưới, tôi thấy rằng safari trên iOS 9 gửi cookie ".ASPXAUTH" - nhưng safari trên iOS 10 thì không!

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

Tại sao safari không thể phát video của tôi? Có cách nào để giải quyết nó?

+3

Tương tự tại đây. Trong trường hợp của tôi, nó là một ứng dụng ngăn xếp LAMP cũng thực hiện kiểm tra trước qua Cookie/Session. Có vẻ như iOS 10 không gửi bất kỳ cookie nào khi tải video. Tôi vẫn đang tìm kiếm một giải pháp. Tôi không thể tin rằng không có cách nào để xử lý trường hợp sử dụng khá phổ biến đó. – Marco

+0

@ FlyBy bạn đã tìm thấy giải pháp nào cho điều này chưa? – Hurricane

+0

Xin lỗi vì trả lời muộn. Có vẻ như bạn sẽ không thể tải iOS làm video bao gồm cả phiên làm việc. Chúng tôi đã giải quyết nó như sau: Tạo "mã thông báo" duy nhất cho mỗi người dùng. Mã thông báo này cần phải được nối thêm dưới dạng tham số GET cho mỗi yêu cầu video được tạo khi sử dụng iOS 10. Sử dụng mã thông báo phương tiện để xác định người dùng khi yêu cầu tài nguyên video. Bằng cách này, video không cần phải hoàn toàn công khai và có ít nhất một số "bảo mật" tối thiểu. Liên kết có thể được sao chép và dán, nhưng ít nhất nó sẽ chỉ có giá trị khi phiên người dùng hợp lệ. – Marco

Trả lời

2

Giải pháp của tôi là ở đây: https://stackoverflow.com/a/40015409/7012293

Về cơ bản bạn cần phải gửi một 403 cấm nếu cookie phiên là mất tích. Safari sẽ thử lại với cookie phiên.

+0

Tôi đã thử nghiệm điều này và nó hoạt động! Thú vị hành vi từ safari ... Tốt tìm, cảm ơn cho câu trả lời! – Mystogan

2

Chúng tôi có cùng một vấn đề chính xác với chồng công nghệ hoàn toàn khác nhau (Linux, PHP, Moodle). Cookie phiên của chúng tôi không được gửi cùng với yêu cầu video (và âm thanh). Chúng tôi không thể tìm ra cách để làm cho iOS hoạt động đúng ở đây, vì vậy chúng tôi đang thực hiện một bản vá khẩn cấp để giải quyết vấn đề bằng cách phát hiện iOS 10 và gửi nó đến tập lệnh khác để phân phối video, truyền phiên bản được mã hóa an toàn của giá trị cookie phiên bên trong đường dẫn đến tập lệnh này và sau đó thực hiện các hack khác nhau để giá trị từ đường dẫn được sử dụng để xác định phiên từ bên trong tập lệnh đó (thay vì cookie không tồn tại). Thay đổi này hoạt động nhưng phức tạp, có những tác động bảo mật nhỏ và có thể khó thực hiện hơn trên các công nghệ khác nhau.

Điều này có vẻ như là một vấn đề lớn với iOS 10 vì vậy tôi hy vọng rằng nó có thể được khắc phục trong bản cập nhật trong tương lai. Ngoài ra, tôi lưu ý rằng mặc dù cookie phiên của chúng tôi không được bao gồm trong video, nhưng một số cookie khác cũng được bao gồm! Tôi không thể tìm ra cái nào không. (Một trong những điều đầu tiên tôi đã cố gắng là sử dụng một timed-hết hạn thay vì cookie phiên, nhưng điều này đã không được gửi với video hoặc.)

+0

Tôi đồng ý, điều này thực sự giống như một vấn đề lớn với iOS. Tôi đã gửi một báo cáo lỗi cho táo, vì vậy với hy vọng họ sẽ sửa chữa nó trong một cập nhật nhỏ. – Mystogan

2

Giải pháp là để được tìm thấy ở đây:

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

Đặt ngày hết hạn cho cookie và trình phát video trong iOS 10 có thể đọc lại cookie. cookie phiên không có ngày hết hạn không thể đọc lại bởi người chơi video trong iOS 10

+0

Lý tưởng nhất là tôi không muốn đặt ngày hết hạn trên cookie asp.net, giữ chúng không liên tục - nhưng dù sao, cảm ơn bạn vì câu trả lời tuyệt vời! Chỉnh sửa: đã kiểm tra điều này, nhưng vẫn không giải quyết được sự cố. – Mystogan

Các vấn đề liên quan