Есть ли способ заставить перенаправление HTTPS работать, когда порт HTTP заблокирован?
Я предполагаю, что вы имеете в виду заблокированный брандмауэром на сервере или перед ним.
По сути, ответ - нет.
Чтобы любая форма перенаправления HTTP работала на сервере, сервер должен иметь возможность получать HTTP-запрос входящего соединения на порт 80. (Этозатем отправил бы ответ 3xx, чтобы сообщить браузеру повторить попытку с другим URL. Этот URL будет HTTPS URL.)
Если запрос HTTP заблокирован до того, как сервер его получит, естественно, он не можетделать что угодно.
Кроме того, если вы попытаетесь сделать что-то умное, например, сопоставить порт 80 с портом 443 в брандмауэре, вы в конечном итоге отправите HTTP-запрос на порт сервера HTTPS.Это не получится, потому что сервер HTTPS ожидает согласования SSL / TLS.Вероятно, он просто закроет соединение.
Если вам действительно нужно это поддерживать, вам необходимо реализовать прокси-сервер HTTP / HTTPS перед сервером и отправить перенаправление обратно в браузер пользователя.Но это глупо.
Если вы действительно хотите заставить людей использовать HTTPS, выполните одно из следующих действий:
- Попросите сетевых администраторов открыть порт 80 на сервере и реализовать перенаправление 3xx на сервере.нормальный способ.
- Держите порт 80 закрытым на сервере и не публикуйте http: // URL.Если какой-либо пользователь пытается использовать URL-адрес http: //, он получит либо «Отказ в соединении», либо «Истекло время ожидания соединения» ... или, однако, браузер решит описать эти сценарии пользователям.
Если вы пытаетесь обойти сетевой блок администраторами, которые не сотрудничают, я бы посоветовал не беспокоиться.По-видимому, у них есть свои причины.