Назад | Перейти на главную страницу

Ошибка HTTP 431 после изменения сервера и IP-адреса аутентифицированного паролем домена

У меня есть тестовый домен, например: https: www.test.com, недавно я переместил свой сервер на новый, на котором размещен в liquid-web. После переноса этой тестовой учетной записи на новый сервер и указания только этот домен начал выдавать ошибку HTTP error 431, а для некоторых из них - пустой экран. У меня есть аутентификация по паролю для этого сайта.

Когда я открываю это в приватном окне или после очистки кеша, он работает нормально. Эта проблема теперь остановила всю миграцию серверов, поскольку мы опасаемся, что это может повлиять на наших постоянных клиентов, которых будет много.

Это скриншот, который я получаю. Пытался удалить htaccess и поместить только index.html в корень, уменьшил значение TTL, попробовал без кеширования через метатег в заголовке, но ничего не помогло.

Кто-нибудь понял, что такое ошибка HTTP 431

У нас возникла такая же проблема после обновления до HTTP 2. Это было вызвано слишком большим количеством установленных файлов cookie. Сложность заключается в том, что эта ошибка не была вызвана размером поля заголовка (в Apache он одинаков для HTTP 1 и 2). Это было вызвано большим количеством полей заголовка. Кажется, что HTTP 1 считает все файлы cookie вместе как один заголовок, но HTTP2 считает каждый файл cookie как один заголовок. После подъема LimitRequestFields со 100 до 1000 проблема исчезла.

Это причина из спецификации HTTP 2:

Чтобы обеспечить лучшую эффективность сжатия, поле заголовка Cookie МОЖЕТ быть разделено на отдельные поля заголовка, каждое с одной или несколькими парами файлов cookie.

Это означает, что в файлах cookie HTTP 1 всегда есть только одно поле. В HTTP 2 файлы cookie могут быть разделены на множество полей. Это основная причина и причина того, что проблемы возникают только в некоторых браузерах.

После того, как несколько раз ударился головой о стол, выяснилось, что проблема возникла, поскольку у меня был создан большой набор файлов cookie, которые я использовал для сохранения идентификатора продукта посетителя клиента, и это вызвало проблему в HTTP 2.0. Я переписал файлы cookie, чтобы использовать только небольшое пространство, и теперь все работает нормально.

Сайт не работал даже после того, как я уменьшил размер файла cookie и загрузил новый код до нового размера. Он вообще не заходил на сайт, мне пришлось перейти с нового сервера HTTP 2.0 на HTTP 1.2 который работал нормально. После того, как мы уменьшили размер файлов cookie на сайте, мы обновились до HTTP 2.0 и устранили проблему на новом сервере.

Но все еще не уверен, что вызвало проблему в HTTP 2.0.