Java后端解决CORS跨域问题

今日在学习过程中,练手的前后端分离项目遇到存在跨域的问题。

问题情况如下:

用户登录接口:

@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类或者方法上进行指定允许的跨域操作。

另一种 是 进行指定全局允许跨域操作(一般我们用的是这个)

该全局配置如下:


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);
    }
}

最后测试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值