@CrossOrigin SpringBoot中的正则表达式

时间:2018-02-16 10:17:41

标签: regex spring-boot spring-security cors cross-domain

我正在尝试定义允许执行REST服务的origins。我正在研究Java(1.8),SpringBoot(1.5.9)。我试图以两种方式实现CORS:

@CrossOrigin(origins = "http://localhost:8080")
@RequestMapping(value="/questions")
public String readCSV() throws IOException, URISyntaxException  {
    /** Some Logic **/
    return str;
}

OR

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {    
    String origins = "http://localhost:8080";       
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedMethods("GET", "PUT", "POST")
                .allowedOrigins(origins)
                .maxAge(3600);
        super.addCorsMappings(registry);
    }
}

以上两种情况都有效。但我想将http://localhost:8080更改为一些有意义的正则表达式,它将与某个特定域名匹配,但子域名和端口号可能会有所不同。
例如,假设所需的域名 innovation.com ,并且很少接受的网址 we.innovation.com:8081 my.innovation.com:8090 等 问题是,每当我放置一些正则表达式而不是静态URL时,它会抛出CORS错误并且不允许访问该服务。即使在我使用允许任何有效网址的正则表达式的情况下,它也会阻止localhost:8080 我试过正则表达式:
^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+innovation.com(:\d{2,4})
^https?://(?:[^./@]+\.)*domain\.com(?![^/])
^(http[s]:\/\/)?([A-Za-z0-9-]{1,63}\\.)+innovation.com(:\d{2,4})

1 个答案:

答案 0 :(得分:1)