佳佳的博客
Menu
首页
Spring Boot CORS 跨域请求
Posted by
佳佳
on 2020-09-10
IT
Spring
<!-- # Spring Boot CORS 跨域请求 --> <!-- spring-boot-cors --> ## 1. 配置全局的 *GlobalCorsConfig* ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class GlobalCorsConfig { @Bean public CorsFilter corsFilter() { //1.添加CORS配置信息 CorsConfiguration config = new CorsConfiguration(); //放行哪些原始域 config.addAllowedOrigin("*"); //是否发送Cookie信息 config.setAllowCredentials(true); //放行哪些原始域(请求方式) config.addAllowedMethod("*"); //放行哪些原始域(头部信息) config.addAllowedHeader("*"); //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息) config.addExposedHeader("Content-Type"); config.addExposedHeader("X-Requested-With"); config.addExposedHeader("accept"); config.addExposedHeader("Origin"); config.addExposedHeader("Access-Control-Request-Method"); config.addExposedHeader("Access-Control-Request-Headers"); //2.添加映射路径 UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource(); configSource.registerCorsConfiguration("/**", config); //3.返回新的CorsFilter. return new CorsFilter(configSource); } } ``` ## 2. 自定义的 *filter* 中过滤 *OPTIONS* 请求 有些浏览器会发送一个 *OPTIONS* 预检请求到服务器,此时 *body* 是空的。 可以通过判断请求的 *method* 是否为 *OPTIONS* 来判断。示例代码如下: ```java @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; HttpServletRequest request = (HttpServletRequest) req; if (request.getMethod().equalsIgnoreCase("OPTIONS")) chain.doFilter(request, response); return; } } ``` ## 参考 1. [SpringBoot 实现前后端分离的跨域访问(CORS)][1] 2. [38.Spring Boot与Vue跨域的问题][2] [1]:http://www.spring4all.com/article/177 (SpringBoot 实现前后端分离的跨域访问(CORS)) [2]:https://juejin.im/post/6844903859689619470 (38.Spring Boot与Vue跨域的问题)
版权声明:原创文章,未经允许不得转载。
https://www.liujiajia.me/2020/9/10/spring-boot-cors
“Buy me a nongfu spring”
« Spring Boot - Filter 示例
Jenkins Pipeline 中调用 Shell 脚本 Permission denied »
昵称
*
电子邮箱
*
回复内容
*
(回复审核后才会显示)
提交
目录
AUTHOR
刘佳佳
江苏 - 苏州
软件工程师
梦嘉集团