URL удаляется после хештега - PullRequest
1 голос
/ 30 апреля 2020

Я использую Java (Maven), Angular (8.3.20) и сервер Tomcat

. В Java у меня есть sendRedirect для HttpServletResponse с URL-адресом, который содержит хэштег.

Так, например: https://localhost: 4200 / api / hello # world .

Но строка после # (часть мира) не появится в внешний интерфейс.

В консоли / сети в качестве заголовка я получил https://localhost: 4200 / api / hello . Таким образом, #world пропал.

Я пытался изменить хэштег на закодированное значение (оно вернет% 23), но это не работает.

Как получить часть после отправки хэштега во внешний интерфейс? Так от бэкэнда (URL с фунтом / хэштегом) до внешнего интерфейса.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Стратегия маршрутизации

Что angular использует с HashLocationStrategy, так это то, что любое содержимое после символа # не отправляется на сервер - что делает его идеальным для хранения состояния приложения.

Почему это полезно

С ha sh маршрутизирует перезагрузку страницы (или пересматривает через закладку) на подстранице, например

http://localhost:4200/#/articles/35

не запрашивает сервер для подстраницы, а возвращает главную страницу приложения.

http://localhost:4200/

Таким образом реализация сервера должна знать только о странице root (единственная вещь, которая когда-либо будет запрашиваться)

Используя PathLocationStrategy (по умолчанию), сервер должен быть настроен для обработки запросов для каждого URL, который реализует ваше приложение.

Итак, что вы можете сделать: отключить HashLocationStrategy в angular из файла маршрутов. Или вы можете добавить URL-адрес без #, а затем отправить его на сервер и обработать URL-адрес на стороне сервера.

У меня возникла та же проблема: я добавил в качестве параметра запроса часть, которая находится перед # в качестве параметра запроса. , так что сервер может получить к нему доступ. Например, (Https://localhost:4200/api/test?remainingDataFromHash=requiredData) вот так

0 голосов
/ 30 апреля 2020

Я искал эту проблему, решение, которое я нашел, состоит в том, чтобы кодировать #% 23, но кажется, что это не работает для всех браузеров (например: IE, Safari), поэтому попробуйте использовать, например, google-chrome .

дополнительная информация о: https://support.google.com/richmedia/answer/190941?hl=en

...