springboot跨域问题

本文介绍了在SpringBoot项目中处理跨域问题的方法,包括在`CorsConfig`中全局配置允许跨域以及在拦截器中设置响应头。通过`addCorsMappings`添加映射并允许所有来源,以及在拦截器的`preHandle`方法中设置相应头,确保了前端页面可以正常访问后端接口。然而,当跨域配置与拦截器同时存在时可能会导致问题,需要注意配置的正确性和兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、前端页面访问后端一个接口

2、正常的响应有Access-Control-Allow-Origin

但是现在返回

3、普通跨域请求:只服务端设置Access-Control-Allow-Origin即可,前端无须设置

4、项目添加CorsConfig.java

/**
 * 解决跨域问题
 * 配置的大意就是允许所有请求跨域访问
 * @param registry
 */
@SuppressWarnings("deprecation")
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {

	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**")
				.allowedOrigins("*")
				.allowCredentials(true)
				.allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
				.maxAge(3600);

	}

}

5、在拦截器的preHandle中添加response参数

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handlerMethod)
			throws Exception {
		ThreadContext.put("uniqTransNo", UUID.randomUUID().toString());
		//在拦截器中设置允许跨域
		response.setHeader("Access-Control-Allow-Origin", "*");
		response.setHeader("Access-Control-Allow-Headers","*");
		response.setHeader("Access-Control-Allow-Methods","*");
		response.setHeader("Access-Control-Allow-Credentials","true");
		response.setHeader("Access-Control-Max-Age","3600");
		return true;
	}

参考资料:
[心得]SpringBoot使用addCorsMappings配置跨域的坑 - SegmentFault 思否
跨域与拦截器同时配置导致跨域失败_一只菜狗的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值