Java服务端Cors跨域资源共享配置,解决与Spring Security冲突引起的问题
2017-11-01 11:10
1371 查看
(一) CORS介绍
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
response响应头:
响应头字段名称 | 作用 |
---|---|
Access-Control-Allow-Origin | 允许访问的客户端的域名 |
Access-Control-Allow-Credentials | 是否允许请求带有验证信息,若要获取客户端域下的cookie时,需要将其设置为true。 |
Access-Control-Allow-Headers | 允许服务端访问的客户端请求头 |
Access-Control-Allow-Methods | 允许访问的HTTP请求方法 |
Access-Control-Max-Age | 用来指定预检请求的有效期(秒),在有效期内不在发送预检请求直接请求。 |
(二) 服务端配置CORS(Spring boot)
简单粗暴,直接写个filter拦截所有请求在response头里加上面的字段.继承WebMvcConfigurerAdapter重写addCorsMappings
public class CorsConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedHeaders("*") .allowedMethods("*") .allowedOrigins("*"); } }
自定义Filter,注册
@Bean public FilterRegistrationBean corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.addAllowedOrigin("*"); config.setAllowCredentials(true); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); bean.setOrder(0); return bean; }
@CrossOrigin注解
@CrossOrigin( origins = "*", allowCredentials = "true", allowedHeaders = "*", methods = RequestMethod.GET, maxAge = 3600 )
(三) 出现的问题:
由于我使用了Spring Security,即使配置了响应头字段,还是不能访问,经过反复测试,最后想到可能因为我用了Spring Security,而Spring Security拦截了我的请求,导致配置不成功.解决方法:
配置Spring Security,设置不拦截OPTIONS请求HttpSecurity#authorizeRequests().antMatchers(HttpMethod.OPTIONS).permitAll()
配置CorsFilter优先级,优于Spring Security配置即可
相关文章推荐
- Java服务端Cors跨域资源共享配置,解决与Spring Security冲突引起的问题
- java服务端解决js跨域的问题 CORS(跨域资源共享) 的配置
- 解决ajax跨域请求的问题-cors(资源共享方案)
- 跨域资源共享问题 tomcat7.0配置CORS(跨域资源共享)
- 跨域资源共享(CORS)问题解决
- 解决前后端分离的 CORS 跨域资源共享问题
- CORS(跨域资源共享)跨域问题及解决
- 跨域资源共享(CORS)问题解决方案
- Apache中配置支持CORS(跨域资源共享)实例
- CORS(跨域资源共享) 的配置
- Apache中配置支持CORS(跨域资源共享)实例
- CORS(跨域资源共享) 的配置
- tomcat7.0配置CORS(跨域资源共享)
- 跨域资源共享 CORS 详解以及IIS中的配置方法
- tomcat7.0配置CORS(跨域资源共享)
- CORS(跨域资源共享) 的配置
- java使用cors解决跨域问题,服务器端开发为语言为java
- tomcat下CORS(跨域资源共享) 的配置
- CORS(跨域资源共享) 的配置
- 如何解决java线程中的资源共享的问题