Springboot+SpringSecurity提供ajax访问的跨域资源服务
1.为何要提供跨域资源服务
最近在写的一个项目后端使用了springboot和springsecurity,前端使用Vue和axios(发送ajax)。为了实现前后端分离,后端要开启CORS(跨站资源共享)
,保证后端能对不同站点下的前端提供服务。
由于浏览器的同源策略,跨域请求一般会被拒绝,导致ajax无法访问到后端资源。
跨域的几种场景,可以判断自己的网站是否跨域:
- 域名不同
- 域名相同,端口不同
- 域名相同,协议不同,如http和https
了解了为什么要开启CORS后可以开始编写开启CORS的代码了。
2.Springboot配置里开启CORS
springboot开启CORS只需在配置里添加CORS的支持,直接编写配置类即可:
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 {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); // 允许的域名
corsConfiguration.addAllowedHeader("*"); // 允许的请求头
corsConfiguration.addAllowed