解決跨域的三種方式
- 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