跨域問題,通過gateway網關配置filter過濾器。實現跨域問題的解決


跨域
指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的 同源策略 造成的,是瀏覽器對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);
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM