Google Chrome перенаправляет с https на http в моем приложении yii2

со вчерашнего дня у меня проблема с гугл хром. Если я отправлю форму, хром перенаправит меня с https на http. Я использую функцию приложения yii2 $this->redirect()

Вы знаете, как решить эту проблему?

Это происходит только в Google Chrome со вчерашнего дня.

Большое спасибо.

Я бы посоветовал проверить, нет ли у формы абсолютного URL-адреса с протоколом http в атрибуте действия. Вы также можете проверить конфигурацию вашего менеджера URL-адресов, если http не принудительно включен в его свойство $hostInfo.

Michal Hynčica 15.12.2020 13:45
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
653
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я не думаю, что проблема в Chrome (или, может быть, так оно и есть, но для таких ситуаций нужно что-то делать на стороне сервера). Кажется, это связано с конфигурацией вашего сервера. В конце вы открываете форму в HTTPS, отправляете ее, а затем уже на сервере выполняете перенаправление.

Итак, вы должны выяснить, как принудительно использовать HTTPS, но с сервера вы не можете делегировать эту ответственность браузеру (не полностью).

Проверьте этот пост "Как заставить ваш сайт перенаправлять на https"

Я не знаю, может быть, я что-то упускаю здесь. Если вы можете подробнее узнать, что происходит в этом перенаправлении, пожалуйста.

РЕДАКТИРОВАТЬ

Получается, что если и есть способы заставить браузер использовать HTTPS, то именно с HSTS. Спасибо Михал Хинчица.

Посмотрите этот пост Что такое HSTS и как его реализовать?

О решении $_SERVER['HTTPS']='on'

Это какой-то хак? Разве эта переменная среды не должна принимать значение автоматически?

В конце концов тут что-то не так, т.к. $_SERVER['HTTPS'] = 'off', или если он вообще не установлен, значит запрос был сделан не по HTTPS, а может быть и так, что сервер отстает обратный прокси или балансировщик нагрузки.

Я думаю, что это похоже на то, чтобы обмануть Yii, особенно следующие функции:

web/Request.php

public function getIsSecureConnection()
    {
        if (isset($_SERVER['HTTPS']) && (strcasecmp($_SERVER['HTTPS'], 'on') === 0 || $_SERVER['HTTPS'] == 1)) {
            return true;
        }
// Rest of the function
}

ServerRequest.php

public static function getUriFromGlobals()
{
        $uri = new Uri('');

        $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http');
// Rest of the function
}

Почему для _SERVER["HTTPS"] не установлено значение 1?

Обнаружение HTTPS и HTTP на сервере, который не отправляет ничего полезного

Вы можете делегировать эту ответственность клиенту, используя HSTS. Но вы все равно должны убедиться, что любой запрос, поступающий через http, перенаправляется на https, как описано в ответе.

Michal Hynčica 15.12.2020 13:49
Ответ принят как подходящий

Добавьте в начало index.php:

$_SERVER['HTTPS']='on';

Проблема 1158169: Форма не защищена в новой версии Chrome

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

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