【问题标题】:Springboot Override Global Allowed Origins configuration from a Controller/MethodSpringboot 覆盖来自控制器/方法的全局允许的来源配置
【发布时间】:2022-11-13 17:11:28
【问题描述】:

我有一个带有 cors 过滤器的应用程序,它只允许某些来源。

@Configuration
public class WebConfiguration {

    @Value("${allowed.origins}")
    private String[] allowedOrigins;
    private String[] allowedMethods = {"GET","HEAD","OPTIONS","POST","PUT","DELETE"};

    @Bean
    public FilterRegistrationBean corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedHeader("*");
        config.setAllowedMethods(Arrays.asList(allowedMethods));
        config.setAllowedOrigins(Arrays.asList(allowedOrigins));
        source.registerCorsConfiguration("/**", config);
        FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
        bean.setOrder(0);
        return bean;
    }

}

我还有一个控制器需要从无源调用(从框架没有任何来源)。

    @PostMapping("/start-payment")
    @CrossOrigin
    public ResponseEntity<?> startPayment(@RequestParam Double amount) {
        String jwt = cybersourcePaymentService.initiatePayment(amount);
        return ResponseEntity.ok(jwt);
    }

有没有办法只允许从 WebConfiguration 中未提及的源调用此方法?

【问题讨论】:

    标签: java spring spring-boot iframe cors


    【解决方案1】:

    是的,这是可能的,您可以通过在特定方法之上添加 @CrossOrigin(origins = "*") 注释来做到这一点。我已经对此进行了测试,并且工作正常。

        @PostMapping("/start-payment")
        @CrossOrigin(origins = "*")
        public ResponseEntity<?> startPayment(@RequestParam Double amount) {
            String jwt = cybersourcePaymentService.initiatePayment(amount);
            return ResponseEntity.ok(jwt);
        }
    

    笔记: 如果有全局 CORS 配置并且在任何项目中都可以使用方法级别的 CORS 配置,则方法级别的 CORS 优先。

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 2012-09-26
      • 2018-03-18
      相关资源
      最近更新 更多