Vì vậy, tôi đã tạo ứng dụng dành cho điện thoại sử dụng socket.io để thực hiện các công cụ.
Tôi có Content-An ninh-Chính sách (CSP) sauiOS Bị từ chối kết nối vì nó xuất hiện trong cả chỉ thị connect-src cũng như chỉ thị src mặc định của Chính sách bảo mật nội dung
<meta http-equiv="Content-Security-Policy" content="
default-src * data: blob: ws: wss:;
style-src * 'unsafe-inline';
script-src * 'unsafe-inline' 'unsafe-eval';
connect-src * ws: wss:;">
Khi tôi bắt đầu ứng dụng trên safari/iOS tôi nhận được lỗi sau:
Refused to connect to ws://10.0.1.63:3000/socket.io/?EIO=3&transport=websocket&sid=xTaMJwP3rVy3UnIBAAAi
because it appears in neither the connect-src directive nor the default-src directive of the Content Security Policy.
VÀ:
SecurityError (DOM Exception 18): The operation is insecure.
Cùng một ứng dụng có cùng CSP hoạt động tốt trên Chrome/Android nhưng không hoạt động trên Safari/iOS.
Tôi nghĩ rằng đây có cái gì để làm với:
a refined content security policy (WebKit)
Tài mà dường như đưa ra rất nhiều:
- The Lounge fails to work over https due to Content Security Policy enforcement in Safari v10
- request isn't sent on iOS 10.0
Tại sao nó nói "từ chối để kết nối với "URL bắt đầu bằng ws:" bởi vì nó xuất hiện trong cả chỉ thị connect-src lẫn default-src di rective của Content-Security-Policy mặc dù nó được đề cập trong cả hai?
Ok, safari/iOS nghiêm ngặt hơn chrome/Android khi nói đến điều này, tất cả đều ổn, nhưng nó vẫn cần cho phép tôi cho phép kết nối. Điều này thực sự gây phiền toái cho nhà phát triển ứng dụng! Các giải pháp?
EDIT: Made một báo cáo lỗi trên bugs.webkit.org: https://bugs.webkit.org/show_bug.cgi?id=165754
Tôi chỉ làm tăng thêm là người đầu tiên "Content-An ninh-Chính sách" và không thẻ meta hai lần, và điều này được Woking cho tôi và camera giải quyết không mở cửa trong iOS . – JimiOr2