属性 | 说明 |
---|---|
origins |
允许的来源列表. 他的值放置在HTTP协议的响应header的Access-Control-Allow-Origin .– * – 意味着所有的源都是被允许的。– 如果未定义,则允许所有来源。 |
allowedHeaders |
实际请求期间可以使用的请求标头列表. 值用于预检的响应header Access-Control-Allow-Headers。 – * – 意味着允许客户端请求的所有头文件。– 如果未定义,则允许所有请求的headers。 |
methods |
支持的HTTP请求方法列表。 如果未定义,则使用由RequestMapping注释定义的方法。 |
exposedHeaders |
浏览器允许客户端访问的响应头列表。 在实际响应报头Access-Control-Expose-Headers中设置值。 – 如果未定义,则使用空的暴露标题列表。 |
allowCredentials |
它确定浏览器是否应该包含与请求相关的任何cookie。 – false – cookies 不应该包括在内。– "" (空字符串) – 意味着未定义.– true – 预响应将包括值设置为true的报头Access-Control-Allow-Credentials。– 如果未定义,则允许所有凭据。 |
maxAge |
预响应的高速缓存持续时间的最大时间(以秒为单位)。 值在标题Access-Control-Max-Age中设置。 – 如果未定义, 最大时间设置为1800秒(30分钟). |
@CrossOrigin(origins = "*", allowedHeaders = "*")
@Controller
public class HomeController
{
@GetMapping(path="/")
public String homeInit(Model model) {
return "home";
}
}
@Controller
public class HomeController
{
@CrossOrigin(origins = "*", allowedHeaders = "*")
@GetMapping(path="/")
public String homeInit(Model model) {
return "home";
}
}
@Controller
@CrossOrigin(origins = "*", allowedHeaders = "*")
public class HomeController
{
@CrossOrigin(origins = "http://example.com")
@GetMapping(path="/")
public String homeInit(Model model) {
return "home";
}
}
WebMvcConfigurerAdapter
添加 CorsRegistry
。
@Configuration
@EnableWebMvc
public class CorsConfiguration extends WebMvcConfigurerAdapter
{
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("GET", "POST");
}
}
WebMvcConfigurer
bean。
@Configuration
public class CorsConfiguration
{
@Bean
public WebMvcConfigurer corsConfigurer()
{
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
};
}
}
CorsConfigurationSource
bean并使用HttpSecurity.cors()
配置。
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and()
//other config
}
@Bean
CorsConfigurationSource corsConfigurationSource()
{
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("https://example.com"));
configuration.setAllowedMethods(Arrays.asList("GET","POST"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
http://blog.xqlee.com/article/303.html