2013-09-10 2 views
1

Я пытаюсь избавиться от предупреждения о сертификате. У меня есть следующий код, который выполняется, прежде чем что-либо еще, и принуждает пользователя к версии протокола HTTPS в URL:301 перенаправление на SSL-предупреждение Предупреждение

if((!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "") && ($_SERVER['REMOTE_ADDR'] != '127.0.0.1')){ 
$redirect = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
header("Location: $redirect"); 
exit(); 

}

Это перенаправляет на правильный URL, но это, кажется, оставить предупреждение SSL на своем пути:

enter image description here

в консоли я получаю это:

(страница на https://mysite.com/special-offer/ отображается небезопасное содержимое из http://mysite.com/special-offer/.)

enter image description here

Однако если посетить URL ($ редирект) напрямую, без предупреждения SSL не дается. Все ресурсы передаются по https.

+0

Вы пытались перенаправить использование htaccess? – Sugar

+0

Я пробовал разные вещи с htacess да, но я должен признаться, что не смог заставить их работать. Похоже, мне придется пересмотреть это. –

ответ

1

Это не имеет никакого отношения к PHP или перенаправлению. На вашей веб-странице есть ссылки на http-ресурсы. Когда эта страница загружается с помощью HTTPS, вы получаете предупреждение.

Решение: просмотрите вашу веб-страницу и измените URL-адрес на «//www.domainname.com» (то есть без спецификатора протокола) или на соответствующие HTTPS-адреса, если это применимо (некоторые серверы имеют разные пути для ресурсов, доступных через HTTP и через HTTPS).

+0

Я не вижу ссылок на http на моей странице, единственный «http» находится в нижнем колонтитуле href. –

+0

@ChrisJAllen «ссылки» здесь не hrefs (я использовал неправильное слово), но img-местоположения, теги исходного кода javascript, то есть загружаемый контент. Обратите особое внимание на скрипты, встроенные в страницу - некоторые из них могут вызвать эту проблему, когда они включают файлы с протоколом http (а не HTTPS). Я когда-то видел этот сбой с кнопкой Facebook (они долго фиксировали его, но эффект был противным). –

+0

Оказывается, я использую значки для значков на значке саппорта, размещенные на http: // –

1

SSL-соединение установлено до того, как вы отправите 301 переадресацию. Поскольку браузер не может доверять перенаправлению, они показывают предупреждение.

+0

Если я иду маршрут htacces, и добавить RewriteCond% {HTTPS} = на RewriteRule^HTTPS: //% {HTTP_HOST}% {REQUEST_URI} [R, L] ошибка все еще остается (после того, как кэш очищается и т.д.). –

+0

@ Aragon0 Если я запрошу http, то я должен получить http, пока не получу 301 вперед (или ссылку на что-то еще, содержащееся на странице регенерации). Как можно установить SSL-соединение до 301? Можете ли вы подробнее указать здесь, что ведет к этому утверждению? – tudor

+0

Есть две возможности: во-первых, существует строгая транспортная безопасность. Во-вторых, когда вы посещаете страницу на веб-сайте, которая была защищена HTTPS, очевидно, что безопасность на следующий. – Lorenz

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