2012-10-17 3 views
11

У меня есть сайт, который отлично загружается в Firefox и IE, но блокируется Chrome. Chrome жалуется на контент в смешанном режиме, однако все ресурсы доступны по относительным URL-адресам в пределах одного домена.Хром не соблюдает https в относительных URL

По моему мнению, относительный URL должен использовать тот же протокол, что и загружаемая главная страница. В этом случае у меня есть следующее:

<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" /> 

Оба являются относительными URL-адресами. При загрузке страницы с помощью HTTPS я получаю следующее из Chrome консоли (изменить доменное имя для частной жизни моего клиента):

 

    [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. 

Я прав в предположении, что относительные адреса должны выполнить требуемый протокол?

UPDATE: Он также блокирует .js файлы ссылаются точно так же:

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

блокировано:

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

Еще одна странная вещь, что если я делаю вид-источник на странице, которая имеет проблему, я вижу относительный URL-адрес, и если я наводил курсор на «ссылку» на актив (таблица стилей, .js-файл), всплывающая подсказка говорит, что это https :.

Обновление 2: В файле .css ничего не упоминается. Вот это все содержимое «small.css» файл, упомянутые выше:

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

Я думаю, что вы правы в информации, которую вы указали. Можете ли вы опубликовать публичный пример, на который мы можем взглянуть напрямую? – ScottR

+0

Несомненно, публичный пример: http://www.bayerglucofacts.com/ Сначала выберите страну (например, Германию), а затем выберите ссылку «Войти». К сожалению, нет «живого» примера на английском языке. – cmattix

ответ

3

В вашем публичном примере статические активы перенаправляются на http-версию, заставляя Chrome жаловаться.

Например, если вы перейдете на https://www.bayerglucofacts.com/assets/css/de-de.css - вы получите перенаправление 302 на номер http://www.bayerglucofacts.com/assets/css/de-de.css, который дает ошибку.

+1

@cmattix - Вы можете найти бесплатный инструмент Fiddler от Telerik, который полезен при диагностике таких проблем. Http://fiddler2.com/ – pwdst

+1

Fiddler - это .NET, но @pwdst. Нельзя ли только через сам Chrome перейти в View -> Developer -> JavaScript Console, а затем выбрать вкладку «Сеть» и отследить вызов http: // там? – bahmait

+0

была эта проблема, точно, очень полезный ответ – MoMolog

1

Представляется наиболее вероятным, что связь внутри CSS указывает на HTTP изображение/ресурса.

+0

В файле css ничего не упоминается. – cmattix

2

У меня была такая же проблема, и это было связано с тегом <base>, указывающим на версию, не относящуюся к SSL-сайту.

Однако, как указал ScottR, это было связано с перенаправлением CSS на версию, отличную от SSL. Кажется, что исправлено сейчас - не забудьте принять его ответ, хотя!

Смежные вопросы