如果发起请求所在主机(也称为域)和处理请求所在主机的协议、域名和端口号这三者中有任何一项不同,那么发出的请求就叫跨域请求。
出于网络安全性方面的考虑,跨域请求会被限制,Spring Boot后端不能直接处理跨域请求,为了解决这一问题,可以在后端项目中引入CORS解决方案。
在CORS(Cross Origin Resource Sharing,跨域资源共享)解决方案中,前端在发送请求前,需要预先用OPTIONS的方式发送一个询问请求,通过该请求得知,在后端支持跨域请求的前提下再发送真正的请求。
具体来说,在后端Spring Boot项目中,添加一个名为ResourcesConfig的配置类,在其中添加一个基于CORS的拦截器,这样前端发来的基于OPTIONS的询问请求会被该拦截器处理,一律返回“可接受跨域请求”,相关代码如下:
@Configuration
public class ResourcesConfig implements WebMvcConfigurer {
/**
* 跨域配置
*/
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
// 设置访问源地址
config.addAllowedOriginPattern("*");
// 设置访问源请求头
config.addAllowedHeader("*");
// 设置访问源请求方法
config.addAllowedMethod("*");
// 有效期 1800秒
config.setMaxAge(1800L);
// 添加映射路径,拦截一切请求
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
// 返回新的CorsFilter
return new CorsFilter(source);
}
}
在该类中,通过第7行的Configuration注解说明本类将起到配置类的作用。该类实现了WebMvcConfigurer接口,并在第8行中通过编写corsFilter方法设置了本项目支持跨域请求。具体来说,在该方法的第24行代码中,设置了本后端项目的所有接口方法,都支持跨域请求。
标签:请求,source,CORS,解决,new,config,跨域 From: https://blog.csdn.net/2301_80197997/article/details/142981796