目的:解决springboot跨域请求的问题
注:
1、这个解决的方法在网上直接都可以搜索到。基本都是三种解决办法。说第一种解决不了 500错误继续什么什么的。。。
2、这都不重要重要的是,他们给出了代码。我们却不知道怎用。
3、我在这个上面做出了解释,和添加了一条,解决session 两次获取不一样的问题后台解决。
第一种 (CorsConfig )
解释全部写在了代码里面,把以下代码,放在controller下面就可以了
package com.xdx97.backstage.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 {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 你需要跨域的地址 注意这里的 127.0.0.1 != localhost
// * 表示对所有的地址都可以访问
corsConfiguration.addAllowedOrigin("http://localhost:3030");
// 跨域的请求头
corsConfiguration.addAllowedHeader("*"); // 2
// 跨域的请求方法
corsConfiguration.addAllowedMethod("*"); // 3
//加上了这一句,大致意思是可以携带 cookie
//最终的结果是可以 在跨域请求的时候获取同一个 session
corsConfiguration.setAllowCredentials(true);
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
//配置 可以访问的地址
source.registerCorsConfiguration("/**", buildConfig()); // 4
return new CorsFilter(source);
}
}
第二种:注解方式
把下面这个注解,放在需要跨域的controller上面,需要的话,也可以配置一个过滤器,实现全局跨域
@CrossOrigin(origins = "*",allowCredentials="true",allowedHeaders = "",methods = {})
第三步:全局启动服务器
如果不明白什么是全局启动,就参考这个里面的第二种启动方法:
https://blog.csdn.net/Tomwildboar/article/details/82422485