Блокировка SSL не отображается в адресной строке браузера, если URL-адрес содержит.php

Я установил SSL-сертификат на моем хост-компьютере. И вынужден перенаправить его в "https" местоположение. Он также работает, когда он перенаправлен в местоположение, содержащее.html ext. Но всего не удалось при перенаправлении на местоположение, содержащее.php ext.

В коде мое изменение было -

$ssl_cer = TRUE;

if ($ssl_cer && isset($_SERVER['HTTPS'])) {
   header('Strict-Transport-Security: max-age=500');
} 
elseif ($ssl_cer && !isset($_SERVER['HTTPS']) )
{
    header("HTTP/1.1 301 Moved Permanently");

    header("Location: https://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]);

    exit();
 }

После этого изменения в моем коде; если вы пытаетесь с http, то он перенаправляется на https, а также показывает блокировку на некоторых страницах. Но мне интересно, если IF ssl включен, он должен получить $_SERVER['HTTPS'] это значение сервера как "Вкл.", Actulay Я не получаю это значение в моих сценариях.

Нужна помощь в ближайшее время, чтобы выяснить эту проблему. Я прав с моим описанием?

1 ответ

Решение

У вас есть несколько проблем здесь, и с помощью браузера вы тестируете их все сразу, и в итоге получаете только один результат: сбой.

Попробуйте использовать curl чтобы проверить только одну из ваших проблем одновременно. Начиная с перенаправления:

В браузере нет ничего необычного в том, чтобы увидеть возвращение перенаправления, новый запрос и повторное перенаправление, еще один новый запрос и, наконец, страница возвращается, но все происходит так быстро, что вы не можете увидеть, как это происходит просмотрев строку URL. Браузеры также могут кэшировать ответы как 302, так и 301, что может еще больше запутать проблему. использование curl при тестировании это однозначно.

curl -I http://example.com/foo.html

curl -I http://example.com/foo.php

Посмотрите, что такое код ответа HTTP и значение Location: заголовок. Если они соответствуют ожидаемым, переходите к следующей проблеме.

После этого вы можете проверить SSL страницы:

curl -I https://example.com/foo.php

Следующий шаг, вероятно, проще всего выполнить в браузере, и это (как сказал @DavidSchwartz) проверить все ресурсы (изображения, таблицы стилей, JavaScript и т. Д.), Которые загружает страница. Вы должны проверить, что все URL начинаются с https:// и что все сертификаты SSL всех загруженных ресурсов действительны.

Инструменты разработчика Chrome или дополнение Firebug для Firefox будут лучшими инструментами здесь.

Если вы все еще ускользаете от вас, размещение фактического URL-адреса здесь может помочь, так как ошибки становятся легче выявлять, когда на вас смотрит больше людей.

Другие вопросы по тегам