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博客