Порт трансляции, вызывающий ошибку 400: Причина: вы говорите простым HTTP на порт сервера с поддержкой SSL - PullRequest
1 голос
/ 04 июня 2019

Трансляция порта настроена на брандмауэре с публичным адресом для перенаправления запроса https с https://customdomain.fr:8443 на https://localIP -apache-server .

Перевод работаетну и страница index.php отображается правильно.

Когда я аутентифицируюсь на портале, URL-адрес изменяется на http вместо https, и появляется следующее сообщение:

Bad Request Ваш браузеротправил запрос, который этот сервер не может понять.Причина: вы говорите обычным HTTP с портом сервера с поддержкой SSL.Вместо этого используйте схему HTTPS для доступа к этому URL.

Если я заменил http на https, страница будет отображаться правильно.

Я использую сервер wamp.В моем httpd.conf есть 2 VirtualhHost, один для порта 80 и один для порта 443. Оба порта прослушиваются.Я попытался включить RewriteRule в httpd.conf в VirtualHost 443:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule "^/?(.*)" "https://customdomain.fr:8443/$1" [L,R,NE]

Но ошибка 400 по-прежнему возникает.Похоже, что Apache отправляет сообщение об ошибке до того, как запрос будет прочитан VirtualHost 443.

Поэтому я попытался установить следующий код перед VirtualHost 443 в httpd.conf:

ErrorDocument 400  https://customdomain.fr:8443/aaa/bbb

Я делаюотсутствует ошибка 400, но отображается страница https://customdomain.fr:8443/aaa/bbb/index.php, а не другая страница в качестве примера https://customdomain.fr:8443/aaa/bbb/order.php

Знаете ли вы способ отображения запрошенной страницы с помощью ErrorDocument или другой способ решения моей проблемыпожалуйста?

1 Ответ

0 голосов
/ 04 июня 2019

Я нашел решение: включите HSTS, добавив следующий код в httpd.conf:

Header always set Strict-Transport-Security "max-age=15552001; includeSubDomains;"

В этом случае браузер отправляет все запросы через https и не через http. Проблема решена.

...