Как разрешить CrossOrigin со всех доменов? - PullRequest
0 голосов
/ 27 сентября 2019

Можно ли как-нибудь разрешить этой конечной точке разрешать запросы из любого места?

Я пробовал как, но ни один из них не работал.

@ CrossOrigin (origins = " ")
@CrossOrigin (origins =" ​​http://
")

@CrossOrigin(origins = "http://localhost:3001")
@GetMapping(path="/transactions")
public @ResponseBody List<RealEstateTransaction> getTransactions() {
    return realEstateTransactionService.findTargets();
}

1 Ответ

1 голос
/ 27 сентября 2019

При работе с кросс-доменами большую часть времени мы склонны беспокоиться о том, что и где пошло не так.Существует много факторов, включая безопасность, веб-компоненты, сокеты и т. Д., Которые должны обрабатываться на стороне сервера перед обработкой запроса.Множество способов реализовать CORS в приложении Spring Boot.

1.Аннотация

Реализуя @CrossOrigin подобно тому, что вы делали в классе Main.Также это можно сделать, добавив @CrossOrigin к конкретным контроллерам / методам, если к конкретному API нужно обращаться только из определенного домена.

@CrossOrigin("*") // to allow from all domains
@CrossOrigin("http://localhost:3001") // to allow from specific domain
@CrossOrigin(origins = "http://localhost:3001")

2.WebConfig

Если Spring Application - это MVC, к которому можно получить доступ к ресурсам.Просто добавьте сопоставления CORS, переопределив функцию WebMvcConfigurer's addCorsMappings.

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedOrigins("*").allowedHeaders("*");
    }
}
SecurityConfig Когда в приложении включена защита, CORS должен быть реализован в SecurityConfig.Регистрация фильтра CORS может быть выполнена разными способами.Одним из них является добавление UrlBasedCorsConfigurationSource к функции http.cors ().Другим является создание CustomCorsFilter путем расширения CorsFilter.
public class CustomCorsFilter extends CorsFilter {

    public CustomCorsFilter() {
        super(configurationSource());
    }

    public static UrlBasedCorsConfigurationSource configurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowCredentials(true);
        configuration.addAllowedOrigin("*");
        configuration.addAllowedHeader("*");
        configuration.setMaxAge(3600L);

        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**", configuration);

        return corsConfigurationSource;
    }
}

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        String[] paths = {"/auth/**", "/env"};

        //http.cors().configurationSource(CustomCorsFilter.configurationSource()); // Option 1

        http
            .csrf().disable()
            .exceptionHandling()
            .authenticationEntryPoint(this.authenticationEntryPoint)
        .and()
            .authorizeRequests()
            .antMatchers(paths)
            .permitAll()
        .and()
            .authorizeRequests()
            .antMatchers("/**")
            .authenticated()
        .and()
            .addFilterBefore(new CustomCorsFilter(), UsernamePasswordAuthenticationFilter.class); //option 2
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...