Spring Boot ustawianie CORS

0

Hej. Mam back-end(spring boot) z oauthem. Teraz piszę front i mam problem z corsem.
O ile do moich controllerów mogę dodać

   @CrossOrigin(origins = "http://localhost:8081")

to problematyczny staje się endpoint od oautha. Próbowałem

@Bean
public WebMvcConfigurer corsConfigurer() {
   return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/oauth/token").allowedOrigins("http://localhost:8081");
            }
        };
    }

Ale nie działa. W firefoxie ciągle wywala błąd

Zablokowano żądanie do zasobu innego pochodzenia: zasady „Same Origin Policy” nie pozwalają wczytywać zdalnych zasobów z „http://localhost:8080/oauth/token”.

Generalnie to fajnie by było zezwolić globalnie dla całego tego origina, ale coś takiego też nie śmiga.

registry.addMapping("*").allowedOrigins("http://localhost:8081");

Jakieś porady? :)

0

Powinno zadziałać:


    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedMethods("*")
                        .allowedOrigins("http://localhost:8081");
            }
        };
    }

PS: Upewnij się że front faktycznie stoi na 8081. I pokaż jeszcze gdzie definiujesz tego beana, tzn całą klase.

0
Interpod napisał(a):

Powinno zadziałać:
PS: Upewnij się że front faktycznie stoi na 8081. I pokaż jeszcze gdzie definiujesz tego beana, tzn całą klase.

Wrzuciłem po prostu tutaj.

@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
class ResourceServerConfig extends ResourceServerConfigurerAdapter {
    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
                .antMatcher("/**").authorizeRequests()
                .antMatchers(HttpMethod.GET, "/hellotest").permitAll()
                .anyRequest()
                .authenticated();
    }

   @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedMethods("*").allowedOrigins("http://localhost:8081");
            }
        };
    }
}

Probówałem też sposobem z Baeldung

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedMethods("*").allowedOrigins("http://localhost:8081");
    }
}

Nie śmiga nic :( Front na 100% jest na 8081.

0

A jak dasz samo registry.addMapping("/**"); ?

0
jarekczek napisał(a):

A jak dasz samo registry.addMapping("/**"); ?

Nie pomogło.
Udało sposobem poniżej. Kiedyś już probowałem tak ale bez

@Order(Ordered.HIGHEST_PRECEDENCE)

no nic. Ważne że coś ruszyło.

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)

public class SimpleCORSFilter 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", "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() {
}

}

Anyway dzięki! ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1