Whitelabel Error Page просто введите по URL? - PullRequest
0 голосов
/ 23 мая 2018

Этот Spring-boot проект интегрирован с Angular 4 .Я могу попасть на домашнюю страницу, когда набираю адрес URL >> localhost:8080.

Я получаю страницу ошибки whitelabel когда вводится любой другой URL-адрес, добавляется параметр, такой как: / login,/signup.

Произошла непредвиденная ошибка (тип = Не найдено, статус = 404).

Я могу перейти на эти страницы (localhost:8080/signup,localhost:8080/foo, ..) на веб-сайте с использованием angular-routing .Таким образом, проблема заключается только в прямом обращении к URL.

Итак, как я могу решить эту проблему, любая идея для проверки будет полезна.

Примечание : Нет авторизации для этих URL на стороне сервера.

Редактировать: добавлен путь index.html.

src/main/resources
  static
    assets
    index.html
    bundle
    bundle
    ..

routing.ts

export const routes: Routes = [
  {
    path: '',
    component: HomeComponent,
    pathMatch: 'full'
  },
  {
    path:'signup',
    component: SignupComponent,
    canActivate: [GuestGuard],
    pathMatch:'full'
  },

Ответы [ 2 ]

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

Я реализовал непосредственно этот WebMvcConfigurer, и он отлично работает для меня.Это ссылка ссылка .

import java.io.IOException;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.resource.PathResourceResolver;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

      registry.addResourceHandler("/**/*")
        .addResourceLocations("classpath:/static/")
        .resourceChain(true)
        .addResolver(new PathResourceResolver() {
            @Override
            protected Resource getResource(String resourcePath,
                Resource location) throws IOException {
                Resource requestedResource = location.createRelative(resourcePath);
                return requestedResource.exists() && requestedResource.isReadable() ? requestedResource
                : new ClassPathResource("/static/index.html");
            }
        });
    }
}
0 голосов
/ 23 мая 2018

Создайте контроллер и перенаправляйте каждый запрос в index.html следующим образом:

@RequestMapping({  "/signup", "/purchase", "/credit"})
public String index() {
    return "forward:/index.html";
}

При этом angular получит URL-адрес и перейдет на соответствующие страницы.Также, при необходимости, измените URL запроса.Всякий раз, когда запрос поступает из браузера напрямую, он будет загружен пружинной загрузкой, а пружинная загрузка не знает URL-адреса угловой маршрутизации.Чтобы предотвратить это, нам нужно перенаправить весь запрос на index.html.

. Или вы можете использовать Use HashLocationStrategy , как @Vikas предложил

...