Показывать страницу-заполнитель, когда браузер получает запрос 302

Когда браузер получает запрос переадресации с сервера, на долю секунды браузер показывает страницу с ошибкой, в которой говорится "Страница не найдена", а затем перенаправляется на соответствующий URL-адрес.

Я ищу решение, в котором браузер, вместо отображения страницы "Страница не найден", показывает фиктивную страницу.

Я предполагаю, что это то, что делают платежные шлюзы, отображая страницу с надписью "Не нажимать кнопку" Назад/Обновить ".

Ответы

Ответ 1

Я считаю, что ваша первоначальная предпосылка о том, что когда браузер получает код ответа 302, он показывает ошибку, может быть неправильным.

Вы можете видеть, что перенаправления происходят на многих веб-сайтах, где все браузеры просто меняют адрес в адресной строке и загружают конечную страницу, не отображая ничего в среднем.

Кроме того, код статуса HTTP 302 не предназначен для части тела, а если он есть, он обычно игнорируется. Итак, я могу думать только о двух вещах, которые могут произойти:

  • Вы используете какой-либо браузер, который имеет другое поведение при принятии кода 302 (старше?).
  • Сервер не отправляет 302 и фактически отправляет обратно страницу с кодом перенаправления.

Хороший способ проверить это зависит от того, какой браузер вы используете, но в большинстве современных браузеров есть панель разработчика, где вы можете видеть исходящие запросы и входящие ответы, а также их заголовки и коды состояния. Затем вы можете проверить, что на самом деле происходит.

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

Ответ 2

Я предполагаю, что это то, что делают платежные шлюзы, отображая страницу с надписью "Не нажимать кнопку" Назад/Обновить "

Для этого вы можете использовать тег meta для обновления/перенаправления. Следующий фрагмент взят из этого сообщения SO

<meta http-equiv="refresh" content="3;url=http://www.google.com/" />

Ответ 3

Вы можете добавить Страница пользовательской ошибки

Чтобы сопоставить 302 с статическим HTML файлом, вам нужно создать html файл с именем 302.html в разделе resources/public/error, структура вашей папки должна выглядеть так:

src/
 +- main/
     +- java/
     |   
     +- resources/
         +- public/
             +- error/
                 +- 302.html

Ответ 4

Если вы используете Spring (как подсказывает тег), вы можете иметь класс для обработки перенаправления, который перенаправляет вас сразу на желаемую страницу.

Существует несколько способов управления перенаправлением, здесь у вас есть хорошее руководство: http://www.baeldung.com/spring-redirect-and-forward