2012-10-17 30 views
11

Tôi có một trang web tải hoàn toàn tốt trong Firefox và IE nhưng đang bị Chrome chặn. Chrome đang phàn nàn về nội dung chế độ hỗn hợp, tuy nhiên, tất cả các tài nguyên đều được truy cập bởi các URL tương đối trong cùng một tên miền.Chrome không tôn vinh https trong các URL tương đối

Từ hiểu biết của tôi, URL tương đối nên sử dụng cùng một giao thức với trang "chính" đang được tải. Đó là trường hợp tôi có những điều sau đây:

<link href="/assets/css/small.css" title="Small" rel="alternate stylesheet" type="text/css" /> 
<link href="/assets/css/large.css" title="Large" rel="alternate stylesheet" type="text/css" /> 

Cả hai đều là URL tương đối. Khi trang web được tải thông qua HTTPS tôi nhận được sau từ Console Chrome (tôi thay đổi tên miền cho sự riêng tư của khách hàng của tôi):

 

    [blocked] The page at https://www.example.com/Login/ ran insecure 
    content from http://www.example.com/assets/css/small.css. 

    [blocked] The page at https://www.example.com/Login/ ran insecure content from 
    http://www.example.com/assets/css/large.css. 

Tôi có sai lầm trong giả định rằng URL tương đối nên tôn vinh những giao thức yêu cầu?

UPDATE: Nó cũng được chặn .js tập tin tham chiếu cùng một cách:

<script src="/assets/scripts/change-text-size.js" type="text/javascript"></script> 

đang bị chặn:

 
[blocked] The page at https://www.example.com/Login/ ran insecure content from http://www.example.com/assets/scripts/change-text-size.js. 

Một điều kỳ lạ là nếu tôi làm xem mã nguồn trên trang đang gặp sự cố, tôi thấy url tương đối và nếu tôi di con trỏ qua "liên kết" đến nội dung (tệp định kiểu, tệp .js) chú giải công cụ KHÔNG nói nó là https :.

Cập nhật 2: Không có gì được tham chiếu trong tệp .css. Dưới đây là toàn bộ nội dung của file "small.css" được đề cập ở trên:

div#content-wrap, 
div#content-one-col 
{ 
    font-size: 65%; 
} 
+0

Tôi nghĩ bạn đã đúng trong thông tin bạn đã cung cấp. Bạn có thể đăng một ví dụ công khai mà chúng ta có thể xem trực tiếp không? – ScottR

+0

Chắc chắn, một ví dụ công khai là: http://www.bayerglucofacts.com/ Đầu tiên chọn một quốc gia (ví dụ Đức) và sau đó chọn liên kết "đăng nhập". Thật không may là không có một ví dụ "sống" tiếng Anh. – cmattix

Trả lời

3

Trong ví dụ công khai của bạn, nội dung tĩnh đang chuyển hướng đến phiên bản http, khiến Chrome phải khiếu nại.

Ví dụ: nếu bạn truy cập https://www.bayerglucofacts.com/assets/css/de-de.css - bạn sẽ nhận được chuyển hướng 302 đến http://www.bayerglucofacts.com/assets/css/de-de.css sẽ gây ra lỗi.

+1

@cmattix - Bạn có thể tìm thấy công cụ miễn phí Fiddler từ Telerik là hữu ích trong việc chẩn đoán các vấn đề như thế này http://fiddler2.com/ – pwdst

+1

Fiddler là .NET chỉ, mặc dù, @pwdst. Không chỉ một mình, thông qua Chrome, hãy vào Xem -> Nhà phát triển -> Bảng điều khiển JavaScript, sau đó chọn tab Mạng và theo dõi cuộc gọi http: // ở đó? – bahmait

+0

có vấn đề này, chính xác, câu trả lời rất hữu ích – MoMolog

1

Dường như có khả năng nhất mà một liên kết bên trong css được trỏ đến một hình ảnh http/tài nguyên.

+0

Không có gì được tham chiếu trong tệp css. – cmattix

2

Tôi đã gặp sự cố tương tự và điều này là do thẻ <base> trỏ đến phiên bản không phải SSL của trang web.

Tuy nhiên, như ScottR đã chỉ ra, điều này là do CSS của bạn chuyển hướng đến phiên bản không phải SSL. Có vẻ như đã được khắc phục ngay bây giờ - đừng quên chấp nhận câu trả lời của anh ấy!

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