Hej, mam apkę restową napisaną w Springu(nie boot). Dodałem OAutha2 i próbuje się teraz połączyć z clientem.
Clienet w Angularze2. Miałem problemy z CORSem, dodałem filtr bo metody ze strony springa nie działały. I teraz jak jest wszystko poprawne, to działa. Zwraca 200, dostaje dane. Ale jak nie jestem zalogowany, to dostaje
"GET localhost: 8080/endpoint 401 ()"
"Failed to load localhost: 8080/endpoint: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'localhost: 4200' is therefore not allowed access. The response had HTTP status code 401."
A jak wyrzuce sobie w konsoli błąd to jest "Status code 0, Unknown Error".
Rozumiem że to jest wina servera? Jak dodać ten header do /oauth/token ?
Tak wygląda mój filter:
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CORSFilter implements Filter {
@Override
public void init(FilterConfig fc) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) resp;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "PATCH,POST,GET,OPTIONS,DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, resp);
}
}
@Override
public void destroy() {
}
}