Как перезапустить SSL-соединение, когда javasctipt перенаправляет на поддомен? Чтобы избежать ошибки 421 http - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть PositiveSSL | Подстановочный многодоменный сертификат для example.com когда я пытаюсь перенаправить пользователя из одного субдомена https в другой, некоторые браузеры работают правильно, но некоторые (iPhone 5+) возвращают 421 MISDIRECTED REQUEST http ошибка.

Причина такой ошибки:

  1. Сервер и клиент поддерживают и используют HTTP / 2.
  2. Клиент запрашивает страницу на foo.example.com.
  3. Во время согласования TLS сервер предоставляет сертификат, действительный как для foo.example.com, так и для bar.example.com (и клиент принимает его). Это можно сделать с помощью подстановочного сертификата или сертификата SAN.
  4. Клиент повторно использует соединение для отправки запроса на bar.example.com.
  5. Сервер не может или не хочет поддерживать повторное использование междоменных соединений (например, потому что вы настроили их SSL по-разному, а Apache хочет принудительно пересмотреть TLS) и обслуживает HTTP 421.
  6. Клиент не повторяет попытку автоматически с новым соединением (см., Например, ошибку Chrome # 546991, теперь исправлена). Соответствующий RfC говорит, что клиент МОЖЕТ повторить попытку, но не ДОЛЖЕН или ДОЛЖЕН. Нет повторных попыток = нет содержимого.

Я вижу, что есть варианты на стороне сервера, чтобы решить эту проблему, например:

  • выдавать отдельные сертификаты для каждого домена, но это создает больше административные накладные расходы и могут не стоить того.
  • изменить конфигурацию Nginx для HTTP / 2 при отправке HTTP 421.
  • Вы также можете полностью отключить HTTP / 2, но это, вероятно, излишне

ВОПРОС:

Можно ли вручную принудительно перезапустить SSL-соединение, используя JavaScript, прежде чем вызывать JS-редирект?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...