Java后端解决CORS跨域问题


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 {

// 当前跨域请求最大有效时长。这里默认1天
private static final long MAX_AGE = 24 * 60 * 60;

@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址
corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头
corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法
corsConfiguration.setMaxAge(MAX_AGE);
source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置
return new CorsFilter(source);
}
}

最后测试:


觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭

微信二维码

wechat pay

支付宝二维码

ali pay

Java后端解决CORS跨域问题
http://blog.angindem.cn/2024/10/14/Angindem-CSDN博客/163_163/
作者
Angindem
发布于
2024年10月14日
许可协议