解决跨域的三种方式
- Jsonp:基于script中的src属性实现
- nginx:反向代理(部署):利用nginx反向代理把跨域为不跨域,支持各种请求方式
- CORS:浏览器会将ajax请求分为两类,其处理方案略有差异:简单请求、特殊请求。(类似于中间商,将请求处理过了,再分配)
这里我是用的CORS,因为springmvc中已经集成了:
@Configuration public class GlobalCorsConfig { @Bean public CorsFilter corsFilter() { //1.添加CORS配置信息 CorsConfiguration config = new CorsConfiguration(); //1) 允许的域,不要写*,否则cookie就无法使用了 config.addAllowedOrigin("http://127.0.0.1:8080"); //2) 是否发送Cookie信息 config.setAllowCredentials(true); //3) 允许的请求方式 config.addAllowedMethod("OPTIONS"); config.addAllowedMethod("HEAD"); config.addAllowedMethod("GET"); config.addAllowedMethod("PUT"); config.addAllowedMethod("POST"); config.addAllowedMethod("DELETE"); config.addAllowedMethod("PATCH"); // 4)允许的头信息 config.addAllowedHeader("*"); //2.添加映射路径,我们拦截一切请求 UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource(); configSource.registerCorsConfiguration("/**", config); //3.返回新的CorsFilter. return new CorsFilter(configSource); } }
但即使都准备好了,测试的时候还是403
原因是请求路径不能再是localhost了,要修改为127.0.0.1