Java后端解决CORS跨域问题
原创 于 2024-10-14 23:28:13 发布 · 粉丝可见 · 786 阅读 · 3 · 3 GEO检测 · 编辑
文章链接:https://blog.csdn.net/hacker_51/article/details/142930102
今日在学习过程中,练手的前后端分离项目遇到存在跨域的问题。
问题情况如下:
用户登录接口:
1 2 3 4 5 6 7 8 9 10 11 12
| @RestController @RequestMapping("/sysUser") @Api(tags = "用户接口") public class SysUserController {
@PostMapping("/login") @ApiOperation(value = "用户登录模块",notes = "根据 userLoginDTO 信息进行登录") public result login(@RequestBody userLoginDTO userLoginDTO){ System.out.println(userLoginDTO); return result.success(); } }
|
从前端发送数据请求

由于前后端的分离,端口的不一致,出现CORS(跨源资源共享)问题。
其中解决CORS方法有两种,一种是 前端 jsonp 处理同源策略等相关的一些配置,另一种就是我们后端的CORS方案处理即可。
我们Java后端又有两种方法来进行处理。
一种是 通过 @CrossOrigin(origins = “http://localhost:8080"\) 注解作用于相应的controller类或者方法上进行指定允许的跨域操作。
另一种 是 进行指定全局允许跨域操作(一般我们用的是这个)
该全局配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| 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 CorsConfig {
private static final long MAX_AGE = 24 * 60 * 60;
@Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.setMaxAge(MAX_AGE); source.registerCorsConfiguration("/**", corsConfiguration); return new CorsFilter(source); } }
|
最后测试:
