Angular2 / Не удается получить / имя_страницы - PullRequest
0 голосов
/ 04 мая 2018

Я создал приложение angular2, настраивает с маршрутами. Страницы открываются нормально через браузер. Однако, когда я пытаюсь получить запрос GET через (например, почтальон), я получаю сообщение «Cannot GET / page_name». Ошибка 404. Если я выполняю запрос GET по основному URL (localhost: 4200), я получаю статус OK с содержимым html из index.html

Я что-то упустил?

Спасибо за ваше время.

Обновление

Чтобы дать больше контекста к вопросу. Я реализовал аутентификацию OAuth2 с неявным предоставлением. Вводит имя пользователя / пароль для аутентификации по Spring (это бэкэнд), как только его аутентифицированный токен OAuth2 генерируется с неявным предоставлением. Проблема заключается в том, что неявное предоставление представляет маркер в URL (redirect_uri) как хеш-фрагмент (якорь) "#". Как таковое значение должно быть проанализировано на стороне клиента. Мой redirect_uri настроен на возвращение на страницу входа в угловое приложение (http://localhost:4200/login) с токеном в URL-адресе. И перенаправление не удается с 404. Я протестировал прямой доступ к http://localhost:4200/login через почтальона, и я получил ту же ошибку 404. Доступ к http://localhost:4200 возвращает index.html исходный html.

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Angular работает в сфере одностраничных приложений, поэтому, по сути, при запуске приложения Angular единственный способ получить доступ к приложению - перейти на страницу индекса, указанную в атрибуте base_ref в index.html.

Когда вы запрашиваете страницу индекса, вы можете направить приложение, используя вашу конкретную конфигурацию маршрутов. Опять же, главная страница загружается из index.html, и как только вы попадаете в само приложение, вы можете оттуда перенаправлять.

Если вы хотите сделать запрос к определенной странице вашего приложения через Postman, вы можете отправить некоторые параметры URL-адреса вместе с вашим запросом и на главной странице приложения, проанализировать параметры URL-адреса и отправить своего пользователя на страницу с чем-то вроде это:

this.router.navigate(['/example'])

Поскольку вы запускаете это на своем локальном хосте, вы сможете добраться до страницы в браузере, но вы не сможете сделать GET из Почтальона с чем-то вроде http://localhost:4200/example, если вы не сделаете некоторые внутренняя маршрутизация с вашим приложением.

0 голосов
/ 05 мая 2018

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

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

0 голосов
/ 04 мая 2018

Можете ли вы указать, к какому URL вы обращаетесь, обычно в angular маршруты являются localhost: 4200 / path

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

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

Ваш URL должен быть http://localhost:4200/Product

...