我找到了一个关于如何在spring-boot应用程序中设置cors头的例子。由于我们有很多源,我需要添加它们。下面的例子有效吗?
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://domain1.com")
.allowedOrigins("http://domain2.com")
.allowedOrigins("http://domain3.com")
}
}
我没有办法测试这个,除非它被三个域使用。但是我想确保我有三个起源设置,而不仅仅是“domain3.com“设置。
EDIT:的理想用例是插入域列表(来自application.properties)并在allowedOrigins中设置它。
即
@Value("${domainsList: not configured}")
private List<String> domains;
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins(domains)
}
}
7条答案
按热度按时间oknwwptz1#
在Sping Boot 中,有一个注解 @CrossOrigin,它只会在响应中添加标题。
wlp8pajw2#
你设置的方式只会设置第三个原点,其他两个原点都会消失。
如果你想设置所有三个原点,那么你需要将它们作为逗号分隔的字符串来传递。
你可以在这里找到实际的代码:
https://github.com/spring-projects/spring-framework/blob/00d2606b000f9bdafbd7f4a16b6599fb51b53fa4/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/CorsRegistration.java#L61
https://github.com/spring-projects/spring-framework/blob/31aed61d1543f9f24a82a204309c0afb71dd3912/spring-web/src/main/java/org/springframework/web/cors/CorsConfiguration.java#L122
bvk5enib3#
此操作无效,请尝试:
另请参阅spring reference cors
yk9xbfzb4#
如果您正在使用带有Springboot的Global CORS,并且希望添加多个域,我是这样做的:
在属性文件中,可以按如下方式添加属性和域:
allowed.origins=*.someurl.com,*.otherurl.com,*.someotherurl.com
以及您的Config类:
希望,这对您和其他正在寻找支持Spring的CORS的人有帮助。
kdfy810k5#
创建自定义注解并使用该注解对API进行注解。
现在,使用此自定义注解为API添加注解
对我来说非常好!!
cgyqldqp6#
资源/应用程序.yaml
config/Config.java
config/WebConfig.java
vbkedwbf7#
这对使用Springboot 2.7.0的我很有效
应用程序.yml
相关配置