2012-11-15 31 views
8

Tôi có một trang web HTTPS rằng trong IE6 & 7 màn hình (do lỗi) một hộp thoại mà đọc:IE6 & 7 nguyên nhân của "Trang này có cả mặt hàng an toàn và không an toàn"

Trang này có cả mặt hàng an toàn và không an toàn

Bạn có muốn hiển thị các mục không an toàn không?

Điều này không xảy ra ở bất kỳ trình duyệt phù hợp nào, nhưng trang web là công ty và nhiều khách hàng vẫn đang sử dụng Windows 2000 và IE6.

Tôi quen thuộc với (và đã bị loại bỏ) các nguyên nhân có thể sau thông điệp này:

  1. Một hoặc nhiều hơn các tài nguyên được tải với trang có http:// thay vì https:// - đây là lý do chính đáng chỉ để hiển thị lỗi và cũng sẽ gây ra thông báo tương tự trong trình duyệt đang hoạt động. Fiddler có thể xác định các tài nguyên được tải không an toàn, vì vậy việc này rất dễ sửa.

  2. IE behaviour.htc file được nạp để cung cấp các tính năng DHTML - đây thường được coi là không được mã hóa ngay cả khi giao diện với một URL https://, mà làm cho họ khá vô dụng thậm chí trở lại khi IE6 là mới. Nó không phải là một ý tưởng tốt để sử dụng chúng ở nơi đầu tiên.

  3. IE treats empty frames as nonsecure resources, vì vậy <iframe src="" hoặc <iframe src="about:blank" cả hai đều gây ra lỗi này. Điều này rất dễ tìm và sửa trong mã.

  4. IE5 được sử dụng để gửi yêu cầu AJAX là không an toàn khi sử dụng thành phần ActiveX XMLHTTP. Tôi không nghĩ rằng đây là một vấn đề trong IE6 trở lên.

  5. URI dữ liệu không được hỗ trợ bởi IE 6 hoặc 7 và sẽ không được hiển thị, nhưng nếu có trong CSS cũng dẫn đến cảnh báo không an toàn. Chúng tôi có CSS ​​khác nhau cho IE không sử dụng chúng.

  6. Javascript protocol links in the source for script tags report as nonsecure: <script type="text/javascript" src="javascript:void(0)"> một cách dễ dàng tránh được bằng cách xóa các thuộc tính src

  7. Không thư viện bên ngoài được nạp, với trang hoặc tự động, và không được sử dụng CDN (nhờ Eric!). Chúng tôi sử dụng một số plugin của bên thứ ba, nhưng chúng được phân phối an toàn và không tự động tải thêm bất kỳ nội dung nào khác.

Có rất nhiều ở đây về lỗi IE này, nhưng tất cả những gì tôi đã tìm thấy cho đến nay chỉ ra một trong những vấn đề ở trên mà tôi đã loại bỏ.

Có lỗi nào khác trong IE6 & 7 có thể là nguyên nhân của lỗi này không?

Có cách nào để xác định tài nguyên mà IE cho là tài nguyên không an toàn không?

Trả lời

6

Tôi đã tìm thấy nguồn gốc của sự cố, nhưng phải mất một số lần đào.

Trước tiên, Eric Law đã đưa ra một số prototype tool (exe) trong another answer giúp xác định sự cố.

Tài nguyên không an toàn là:

data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs= 

Vấn đề là IE6 không hỗ trợ URI dữ liệu, vì vậy chúng tôi không sử dụng chúng. Vậy điều này đến từ đâu?

Nó chỉ ra rằng jQuery UI 1.8 là vấn đề, đặc biệt là bản vá cho another bug trong CSS:

.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; 
    /* http://bugs.jqueryui.com/ticket/7233 
    - Resizable: resizable handles fail to work in IE if transparent and content overlaps 
    */ 
    background-image:url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=); 
} 

Dường như others have also spotted this issue, và it's been fixed trong mới nhất jQuery UI CSS (1.9 trở lên).

Sửa lỗi của tôi là thay thế bằng URL thông thường cho gif trống, giải quyết được sự cố.

+4

Ngoài thủ phạm bạn đã đề cập, sử dụng javascript: làm giao thức gây ra sự cố này trong các phiên bản IE lỗi thời. Chi tiết khác: http://blogs.msdn.com/b/ieinternals/archive/2009/06/22/https-mixed-content-in-ie8.aspx – EricLaw

+0

@EricLaw chúc mừng! Tôi không nghe nói về câu hỏi đó, câu hỏi đã được cập nhật. – Keith

+0

dành nhiều giờ sửa chữa nó, là cùng một vấn đề nhưng base64 được tạo ra bởi SASS – RomanTheGreat

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