bra*_*orm 8 spring spring-mvc cors spring-boot
我找到了一个关于如何在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")
}
}
Run Code Online (Sandbox Code Playgroud)
我无法测试这个,除非它被三个域使用.但我想确保我设置了三个来源,而且不仅设置了"domain3.com".
编辑:理想的用例是注入域列表(来自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)
}
}
Run Code Online (Sandbox Code Playgroud)
小智 19
在Spring引导中有一个注释@CrossOrigin,它只是在响应中添加标题.
1. For multiple:
@CrossOrigin(origins = {"http://localhost:7777", "http://someserver:8080"})
@RequestMapping(value = "/abc", method = RequestMethod.GET)
@ResponseBody
public Object doSomething(){
...
}
2. If you wanna allow for everyone then simply use.
@CrossOrigin
Run Code Online (Sandbox Code Playgroud)
Zer*_*leb 14
在application.properties放
endpoints.cors.allowed-origins=http://domain1.com,http://domain2.com,http://domain3.com
Run Code Online (Sandbox Code Playgroud)
属性的Spring Boot文档
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
Dee*_*arg 13
您设置的方式只会设置第三个原点而其他两个将不复存在.
如果你想要所有三个来源,那么你需要传递然后作为命令分隔字符串.
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://domain1.com","http://domain2.com"
"http://domain3.com");
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到实际的代码:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
@PropertySource("classpath:config.properties")
public class CorsClass extends WebMvcConfigurerAdapter {
@Autowired
private Environment environment;
@Override
public void addCorsMappings(CorsRegistry registry) {
String origins = environment.getProperty("origins");
registry.addMapping("/api/**")
.allowedOrigins(origins.split(","));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27654 次 |
| 最近记录: |