Я создал приложение angular2, настраиваемое с помощью маршрутов. Страницы открываются через браузер нормально. Однако, когда я пытаюсь получить запрос GET через (например, почтальона), я получаю сообщение «Cannot GET / page_name». Ошибка 404. Если я запускаю запрос GET для основного URL (localhost: 4200), я получаю статус OK с содержимым html из index.html.
Я что-то пропустил?
Спасибо за ваше время.
Обновлять:
Чтобы дать больше контекста для вопроса. Я реализовал аутентификацию OAuth2 с неявным разрешением. Вводит пользователя / пароль для аутентификации в Spring (это бэкэнд) после того, как аутентифицированный токен OAuth2 сгенерирован с неявным предоставлением. Проблема в том, что неявное предоставление представляет токен в URL (redirect_uri) как фрагмент хэша (привязку) «#». Таким образом, значение должно быть проанализировано на стороне клиента. Мой redirect_uri настроен на возврат на страницу входа в приложение angular (http: // localhost: 4200 / логин) с токеном в URL-адресе. И перенаправление не удается с 404. Я тестировал прямой доступ к http: // localhost: 4200 / логин через почтальона, и у меня была такая же ошибка 404. Доступ к http: // локальный: 4200 возвращает index.html исходный html.





Не могли бы вы указать, к какому URL-адресу вы обращаетесь, обычно в angular маршруты - localhost: 4200 / path
где дорожка - это путь, который вы указали для этой страницы в конфигурации маршрутов. для напр.
const appRoutes: Routes = [
{ path: 'Product', component: Appproduct },
{ path: 'Inventory', component: AppInventory },
];
Ваш URL-адрес должен быть http: // localhost: 4200 / Продукт
URL-адрес не будет загружен в почтальоне, потому что приложение angular представляет собой одностраничное приложение. URL-адрес отлично загружается в браузере, потому что javascript выполняется в браузере и загружает фрагмент. Но при доступе к странице через почтальона он получит только источник страницы.
Ага, понял. Имеет смысл.
Angular работает в сфере одностраничных приложений, поэтому, по сути, когда вы запускаете приложение angular, единственный способ получить доступ к приложению - это перейти на страницу индекса, которая указана в атрибуте base_ref в index.html.
Когда вы запрашиваете страницу индекса, вы можете направить приложение, используя вашу конкретную конфигурацию маршрутов. Опять же, главная страница загружается из index.html, и как только вы находитесь в самом приложении, вы можете выполнять маршрутизацию оттуда.
Если вы хотите выполнить запрос к определенной странице вашего приложения через Postman, вы можете отправить некоторые параметры URL-адреса с вашим запросом и на своей главной странице вашего приложения, проанализировать параметры URL-адреса и отправить своего пользователя на страницу примерно так:
this.router.navigate(['/example'])
Поскольку вы запускаете это на своем локальном хосте, вы сможете получить доступ к странице в браузере, но вы не сможете выполнить GET из Postman с чем-то вроде http: // localhost: 4200 / пример, если вы не выполните внутреннюю маршрутизацию с вашим приложением.
re: проанализируйте параметры URL и отправьте своего пользователя на страницу примерно так где мне добавить эту логику? В app.component.ts (пробовали не получилось)? Через почтальона, если я попробую GET против localhost: 4200, я получу index.html source html. Если я попробую localhost: 4200 / somepage, я получу "Cannot GET / page_name
Я добавил больше объяснений, зачем мне это нужно.
Что я собираюсь сделать, так это вместо отправки запроса GET в Spring для аутентификации я перенаправлю пользователя на страницу входа в Spring, после аутентификации он будет перенаправлен обратно в Angular. Вся моя идея заключалась в том, чтобы отправить запрос на вход в Spring из самого Angular. Но я думаю, что такой подход должен сработать.
Пользователь попадает на страницу входа в систему Angular, если токен не существует, пользователь перенаправляется на страницу входа в Spring. После аутентификации пользователь перенаправляется обратно на страницу входа в систему Angular, и в этот момент запрос должен идти с токеном, и он будет обработан компонентом страницы входа в систему Angular (для добавления его в хранилище и т. д.)
Я пытаюсь получить доступ к localhost: 4200 / логин. URL-адрес работает нормально при открытии в браузере, но почтальон возвращает 404. Я также добавил дополнительные объяснения того, чего я пытаюсь достичь (см. Обновление вопроса).