Включив режим HTML5 в AngularJS, служба $location
перепишет URL-адреса, чтобы удалить из них хешбанг. Это отличная функция, которая поможет мне с моим приложением, но есть проблема с его откатом в режим hashbang. Мой сервис требует аутентификации, и я вынужден использовать внешний механизм аутентификации из своего приложения. Если пользователь попытается перейти к URL-адресу моего приложения с помощью hashbang, он сначала перенаправит их на страницу аутентификации (никогда не коснется моей службы, если она не будет успешно завершена), а затем перенаправит их обратно в мое приложение. Поскольку хэш-тег отображается только с клиентской стороны, он будет отбрасывать все части маршрутов после того, как они попадут на мой сервер. Как только они будут аутентифицированы, они могут повторно ввести URL-адрес, и он будет работать, но это будет одно начальное время, которое вызовет нарушение работы пользователя.
Мой вопрос в том, есть ли какой-либо способ перейти от $location.html5Mode(true)
к резервному перезагрузке полноэкранных страниц для не поддерживающих браузеров, пропуская метод hashbang маршрутизации целиком в AngularJS?
Лучшее сравнение доступных реализаций того, для чего я стремлюсь, было бы чем-то вроде просмотра страниц на github.com. Если браузер поддерживает переписывание URL-адреса без инициирования обновления страницы, страница будет асинхронно загружать необходимые части. Если браузер не поддерживает его, когда пользователь нажимает на папку, происходит обновление полной страницы. Может ли это быть достигнуто с помощью AngularJS вместо использования режима hashbang?