跨域
指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的 同源策略 造成的,是瀏覽器對js施加的安全限制。(ajax可以)
同源策略
是指 協議,域名,端囗 都要相同,其中有一個不同都會產生跨域
示例:

跨域流程

預檢請求options
簡單請求不會觸發CORS預檢請求,“簡屬於
單請求”術語並不屬於Fetch(其中定義了CORS)規范。
若滿足所有下述條件,則該請求可視為“簡單請求”:
- 使用下列方法之一:
- GET
- HEAD
- POST
- Content-Type: (僅當POST方法的Content-Type值等於下列之一才算做簡單需求)
- text/plain
- multipart/form-data
- application/x-www-form-urlencoded
解決跨域問題
在gateway網關中定義一個過濾器配置文件.
基本思想:需要一個CorsWebFilter,然后缺什么new 什么。是接口找實現類
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
@Bean // 添加過濾器
public CorsWebFilter corsWebFilter(){
// 基於url跨域,選擇reactive包下的
UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource();
// 跨域配置信息
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 允許跨域的頭
corsConfiguration.addAllowedHeader("*");
// 允許跨域的請求方式
corsConfiguration.addAllowedMethod("*");
// 允許跨域的請求來源
corsConfiguration.addAllowedOriginPattern("*");
// 是否允許攜帶cookie跨域
corsConfiguration.setAllowCredentials(true);
// 任意url都要進行跨域配置
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
