同源策略
协议、域名、端口3个都相同就是同源
Vue:http://localhost:8080
SpringBoot: http://localhost:8181/list
CORS: Cross Origin Resource Sharing
解决方案(后端):
- 直接在要访问的方法上加@CrossOrigin
@PostMapping("/login")
@CrossOrigin
public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {
....
}
- 添加跨域配置
@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);
}
}
- 实现WebMvcConfigurer接口,重写addCorsMappings方法
@Configuration
public class CorsConfigutation implements WebMvcConfigurer{
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowedMethods("GET","POST","PUT","DELETE")
.maxAge(3600)
.allowedHeaders("*");
}
}
解决前后端分离Vue项目部署到服务器后出现的302重定向问题
https://cloud.tencent.com/developer/article/2236776