У меня есть PositiveSSL | Подстановочный многодоменный сертификат для example.com
когда я пытаюсь перенаправить пользователя из одного субдомена https в другой, некоторые браузеры работают правильно, но некоторые (iPhone 5+) возвращают 421 MISDIRECTED REQUEST http ошибка.
Причина такой ошибки:
- Сервер и клиент поддерживают и используют HTTP / 2.
- Клиент запрашивает страницу на foo.example.com.
- Во время согласования TLS сервер предоставляет сертификат, действительный как для foo.example.com, так и для bar.example.com (и клиент принимает его). Это можно сделать с помощью подстановочного сертификата или сертификата SAN.
- Клиент повторно использует соединение для отправки запроса на bar.example.com.
- Сервер не может или не хочет поддерживать повторное использование междоменных соединений (например, потому что вы настроили их SSL по-разному, а Apache хочет принудительно пересмотреть TLS) и обслуживает HTTP 421.
- Клиент не повторяет попытку автоматически с новым соединением (см., Например, ошибку Chrome # 546991, теперь исправлена). Соответствующий RfC говорит, что клиент МОЖЕТ повторить попытку, но не ДОЛЖЕН или ДОЛЖЕН. Нет повторных попыток = нет содержимого.
Я вижу, что есть варианты на стороне сервера, чтобы решить эту проблему, например:
- выдавать отдельные сертификаты для каждого домена, но это создает больше
административные накладные расходы и могут не стоить того.
- изменить конфигурацию Nginx для HTTP / 2 при отправке HTTP 421.
- Вы также можете полностью отключить HTTP / 2, но это, вероятно, излишне
ВОПРОС:
Можно ли вручную принудительно перезапустить SSL-соединение, используя JavaScript, прежде чем вызывать JS-редирект?