У меня есть Java-приложение Angular, в котором включен URL-адрес режима HTML5, т. Е. Используется Angular PathLocationStrategy. После включения режима HTML5 приложение работает нормально, когда вы запускаете приложение, например https://app.myapplication.com/, и затем перемещаетесь внутри.Но происходит сбой при запуске приложения, например https://app.myapplication.com/home, поскольку сервер пытается отобразить путь / home, даже если / home должен обрабатываться Angular.
Чтобы это исправить, я ввел HTML5modeОтфильтруйте, как указано ниже, для любого URL, кроме запроса статических файлов или API, он вернет index.html
public class Html5ModeUrlSupportFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain)
throws ServletException, IOException {
if (isStatic(request) || isApi(request)) {
filterChain.doFilter(request, response);
} else {
request.getRequestDispatcher("/index.html").forward(request, response);
}
}
private boolean isApi(HttpServletRequest request) {
return request.getRequestURI().indexOf("/api/") >= 0;
}
private boolean isStatic(HttpServletRequest request) {
return Pattern.matches(".+\\.((html)|(css)|(js))$", request.getRequestURI());
}
Теперь, когда я запускаю проверку приложения на этом, я сталкиваюсь с уязвимостью AccessControl.Bypass на request.getRequestDispatcher("/index.html").forward(request, response);
как это преодолеть.Я зарегистрировал этот фильтр в своем файле web.xml для шаблона URL-адреса ' / *', и мой диспетчер Spring зарегистрирован для шаблона URL-адреса ' / api '.
Любойпомощь или предложение о том, как преодолеть это высоко ценится.Заранее спасибо