Angular2 / не удается получить / имя_страницы

Я создал приложение 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.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
1 155
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Не могли бы вы указать, к какому URL-адресу вы обращаетесь, обычно в angular маршруты - localhost: 4200 / path

где дорожка - это путь, который вы указали для этой страницы в конфигурации маршрутов. для напр.

const appRoutes: Routes = [
   { path: 'Product', component: Appproduct },
   { path: 'Inventory', component: AppInventory },
];

Ваш URL-адрес должен быть http: // localhost: 4200 / Продукт

Я пытаюсь получить доступ к localhost: 4200 / логин. URL-адрес работает нормально при открытии в браузере, но почтальон возвращает 404. Я также добавил дополнительные объяснения того, чего я пытаюсь достичь (см. Обновление вопроса).

Ivica 05.05.2018 10:49

URL-адрес не будет загружен в почтальоне, потому что приложение angular представляет собой одностраничное приложение. URL-адрес отлично загружается в браузере, потому что javascript выполняется в браузере и загружает фрагмент. Но при доступе к странице через почтальона он получит только источник страницы.

Palsri 05.05.2018 11:15

Ага, понял. Имеет смысл.

Ivica 05.05.2018 11:16
Ответ принят как подходящий

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

Ivica 05.05.2018 10:40

Я добавил больше объяснений, зачем мне это нужно.

Ivica 05.05.2018 10:48

Что я собираюсь сделать, так это вместо отправки запроса GET в Spring для аутентификации я перенаправлю пользователя на страницу входа в Spring, после аутентификации он будет перенаправлен обратно в Angular. Вся моя идея заключалась в том, чтобы отправить запрос на вход в Spring из самого Angular. Но я думаю, что такой подход должен сработать.

Пользователь попадает на страницу входа в систему Angular, если токен не существует, пользователь перенаправляется на страницу входа в Spring. После аутентификации пользователь перенаправляется обратно на страницу входа в систему Angular, и в этот момент запрос должен идти с токеном, и он будет обработан компонентом страницы входа в систему Angular (для добавления его в хранилище и т. д.)

Другие вопросы по теме