Публикация аналогичной проблемы с решением, с которой я столкнулся.
Надеюсь, это поможет кому-то с аналогичным требованием preserving hash in IE
для переадресации 302.
Добавление основных частей ответа вместо одних ссылок
В нашем приложении мы используем SiteMinder
аутентификацию.
Я выяснил, что после успешной аутентификации SiteMinder
выполняет 302 redirection
на странице приложения, запрошенной пользователем, используя скрытую переменную формы входа value
(где хранится запрошенный пользователем URL-адрес /myapp/
- without hash fragment
, поскольку он не будет отправлен на server) с именем, похожим на redirect
. Образец формы ниже
Поскольку redirect
скрытая переменная значение содержит только /myapp/
без хэш-фрагмента и это перенаправление 302, этот хеш-фрагмент автоматически удаляется IE еще до того, как он поступает в наше приложение, и какими бы ни были решения, которые мы пытаемся использовать в коде нашего приложения, являются не получается.
IE перенаправляется только на /myapp/
, и он попадает на главную страницу нашего приложения по умолчанию https://ourapp.com/myapp/#/home
.
Потратил почти день, чтобы выяснить это поведение.
Решение такое:
Изменили значение скрытой переменной формы входа (redirect
) для хранения хеш-фрагмента, добавив window.location.hash
вместе с существующим значением. Подобно приведенному ниже коду
$(function () {
var $redirect = $('input[name="redirect"]');
$redirect.val($redirect.val() + window.location.hash);
});
После этого изменения скрытая переменная redirect
сохраняет запрошенное пользователем значение URL-адреса как /myapp/#/pending/requests
, а SiteMinder
перенаправляет его на /myapp/#/pending/requests
в IE.
Приведенное выше решение нормально работает во всех трех браузерах Chrome, Firefox and IE
.
Спасибо @AlexFord за подробное объяснение и предоставление решение этой проблемы.
person
Prathap Reddy
schedule
15.07.2020