Tôi đang cố gắng tạo ứng dụng bằng WebView nhưng trang web đang sử dụng https
nhưng nội dung (ví dụ: tệp mp3) sử dụng http
, vì vậy Android Lollipop sẽ không tải ứng dụng đó vì nó "Nội dung hỗn hợp". Tôi đã cố gắng sử dụng onReceivedSslError
handler.proceed();
nhưng không tải bất kỳ thứ gì. Có cách nào để khắc phục nó? hoặc tôi có thể chỉ làm cho tất cả các trang web được tải sử dụng http
, vì vậy nó không hiển thị bất kỳ lỗi nào?Android WebView không tải Nội dung hỗn hợp
Trả lời
Since Lollipop (API 21), WebView blocks all mixed content by default.
Để thay đổi hành vi này, khi bạn đang nhắm mục tiêu cấp độ API 21 trở lên, sử dụng:
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
Trong chế độ này, WebView sẽ cố gắng để phù hợp với cách tiếp cận của một hiện đại trình duyệt web liên quan đến nội dung hỗn hợp. Một số nội dung không an toàn có thể được phép tải bằng nguồn gốc an toàn và các loại nội dung khác sẽ bị chặn. Các loại nội dung là được cho phép hoặc bị chặn có thể thay đổi bản phát hành để phát hành và không phải là được xác định rõ ràng.
Thực tế điều này sẽ cho phép tải hình ảnh, video, nhạc, v.v. - tất cả nội dung có xác suất thấp là mối đe dọa bảo mật lớn, khi bị thay thế bởi bên thứ ba độc hại.
Hoặc sử dụng (khuyến khích mạnh mẽ):
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
Trong chế độ này, WebView sẽ cho phép một nguồn gốc an toàn để tải nội dung từ bất kỳ nguồn gốc khác, ngay cả khi nguồn gốc đó là không an toàn. Đây là chế độ hoạt động an toàn ít nhất cho WebView và nếu có thể, ứng dụng sẽ không đặt chế độ này.
Nếu API phút của bạn là ít hơn 21 và không thể gọi setMixedContentMode trực tiếp, bạn có thể sử dụng phản ánh:
try {
Method m = WebSettings.class.getMethod("setMixedContentMode", int.class);
if (m == null) {
Log.e("WebSettings", "Error getting setMixedContentMode method");
}
else {
m.invoke(webView.getSettings(), 2); // 2 = MIXED_CONTENT_COMPATIBILITY_MODE
Log.i("WebSettings", "Successfully set MIXED_CONTENT_COMPATIBILITY_MODE");
}
}
catch (Exception ex) {
Log.e("WebSettings", "Error calling setMixedContentMode: " + ex.getMessage(), ex);
}
Điều này rất hữu ích. Cảm ơn... – Abhineet
để tải nó có điều kiện về API> = 21, bạn không cần phải sử dụng phản ánh.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
}
Nếu bạn đang sử dụng phản ứng tự nhiên, bạn có thể thiết lập các mixedContentMode
trên webview của bạn:
<WebView
source={{ uri: location }}
mixedContentMode='compatibility'
/>
https://facebook.github.io/react-native/docs/webview.html#mixedcontentmode
- 1. Cách tải Chrome để cho phép nội dung hỗn hợp?
- 2. nội dung webview android không thể chọn
- 3. Nút nội dung hỗn hợp XSLT
- 4. Android: WebView tải hình ảnh/nội dung ở trung tâm
- 5. Nội dung hỗn hợp: Gọi nội dung http từ API từ trang https
- 6. WebView rõ ràng nội dung
- 7. Nội dung hỗn hợp và thao tác chuỗi xóa sạch
- 8. lỗi nội dung hỗn hợp máy chủ webpack dev
- 9. NSRangeException trong UITableViewController với nội dung động/tĩnh hỗn hợp
- 10. Đang tải tệp html vào webview trên android từ thư mục nội dung bằng Android Studio
- 11. Thay thế một phần nội dung WebView khi đang tải
- 12. Android WebView không tải URL
- 13. Trang nội dung hỗn hợp: đã yêu cầu lỗi biểu định kiểu không an toàn
- 14. Android webview phù hợp với tất cả nội dung để sàng lọc
- 15. Phát hiện biểu tượng khóa bị hỏng (nội dung hỗn hợp/không an toàn) từ Javascript
- 16. Hiển thị nội dung HTML hỗn hợp mà không cần WebBrowser? (các vấn đề với ScrollViewer)
- 17. Cách tải nội dung html từ XWalkView?
- 18. Android WebView không được làm mới sau khi nội dung webview đã được sửa đổi bởi JavaScript
- 19. Tải tệp js từ nội dung vào webview sau khi tải html
- 20. Cách khắc phục "Nội dung hoạt động hỗn hợp tải bị chặn" cho css và js qua https
- 21. IE 10 và 11 treo khi hộp thoại "Nội dung hỗn hợp" xuất hiện
- 22. fancybox không tải nội dung đúng cách
- 23. SSL: Tại sao Chrome báo cáo nội dung hỗn hợp? (Drupal 6)
- 24. Deserialize giá trị phần tử như chuỗi mặc dù nó có chứa nội dung hỗn hợp
- 25. cấu hình máy chủ apache keycloak với 'Nội dung hỗn hợp' vấn đề
- 26. index phạm vi trên nút nội dung hỗn hợp trong tồn tại db
- 27. Caching trong webview Android
- 28. Cách sửa đổi nội dung trước khi hiển thị trong Android WebView?
- 29. jquery cách tải nội dung giá trị nội dung iframe
- 30. Nội dung trang web phù hợp bên trong một chế độ xem web (Android)
này không hoạt động – superUser
Tôi đang chạy vào cùng một vấn đề. Tôi đang nhắm mục tiêu một thiết bị đó là api19 và mã trên chỉ hoạt động trên api 21, Seem được ở nơi ngọt ngào, nơi nó chỉ không làm việc một trong hai cách. Bất kỳ ý tưởng? – Danimal
Điều này không hoạt động –