欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring gateway如何解決跨域問題

 更新時(shí)間:2024年04月22日 10:13:26   作者:it界的哈士奇  
這篇文章主要介紹了spring gateway如何解決跨域問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

報(bào)錯(cuò)截圖

報(bào)錯(cuò)意思是請求頭中沒有Access-Control-Allow-Origin

報(bào)錯(cuò)分析

但我在網(wǎng)關(guān)的配置文件中早就加了跨域的配置了

嘗試解決

于是我上網(wǎng)開始查

但是網(wǎng)上的代碼要么方法過時(shí)報(bào)錯(cuò),要么就向配置文件原因沒有起作用,好在我堅(jiān)持不懈的查詢下,把所有有用的信息拼湊成了一個(gè)有用的配置方法

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

@Configuration
public class CorsConfig {

    @Bean
    public CorsWebFilter corsWebFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedMethod("*"); // 允許任何方法(post、get等)
        config.addAllowedOrigin("*"); // 允許任何域名使用
        config.addAllowedHeader("*"); // 允許任何頭
        config.setAllowCredentials(true); //允許接受cookie

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);

        return new CorsWebFilter(source);
    }
}

只要在網(wǎng)關(guān)微服務(wù)下創(chuàng)建一個(gè)配置類把這段代碼加進(jìn)去即可

于是

重新啟動

好家伙

再次報(bào)錯(cuò),不過這次不是沒有該屬性,而是兩個(gè)!!

那既然這樣

我就試試只用代碼配置,而注釋配置文件配置(因?yàn)殚_始就是配置文件配置無效)

重啟走起

依然報(bào)重復(fù)錯(cuò)誤。。。。

最終

最后通過調(diào)試發(fā)現(xiàn)

請求發(fā)往網(wǎng)關(guān)后,再次發(fā)往其他微服務(wù),而該微服務(wù)的controller類上配置了跨域注解

這就導(dǎo)致了兩次Access-Control-Allow-Origin被設(shè)置了

所有只要把@CrossOrigin注解去了即可

再次重啟

總結(jié)

除了為啥在配置文件里配置沒有生效沒搞懂外,其他都能理解

同時(shí)這里也解釋了一個(gè)問題,為啥要專門寫一個(gè)接口api模塊來專門實(shí)現(xiàn)微服務(wù)間的調(diào)用

從這里調(diào)用用戶微服務(wù)來看,網(wǎng)關(guān)配置了跨域,那么其他的微服務(wù)就不能配置跨域了

那這樣微服務(wù)如果直接調(diào)用就成了跨域了,而api接口模塊就很好的解決了這個(gè)問題,同時(shí)也限制了服務(wù)與服務(wù)見可調(diào)用接口的數(shù)量,按需來調(diào)用,看來當(dāng)初聽老師話多創(chuàng)建一個(gè)api接口模塊是有原因的啊

解決睡覺!

補(bǔ)充?。。?/strong>

后來發(fā)現(xiàn)

刪除其他微服務(wù)的跨域配置在vue連接里可行

但是如果在html頁面直接發(fā)送axios請求后臺數(shù)據(jù)

請求網(wǎng)關(guān)可行,但是請求完了網(wǎng)關(guān),網(wǎng)關(guān)會進(jìn)行一次頁面轉(zhuǎn)發(fā)

這就使得第二次請求沒有Access-Control-Allow-Origin報(bào)跨域請求

如果將后臺服務(wù)的跨域配置重新寫上

又會出現(xiàn)Access-Control-Allow-Origin重復(fù)的問題。。。

好在查到了大佬的帖子,可以在配置文件找那個(gè)添加一段過濾配置

解決重復(fù)跨域問題,進(jìn)行header去重

spring:
  cloud:
    gateway:
      default-filters:
        - DedupeResponseHeader=Vary Access-Control-Allow-Credentials Access-Control-Allow-Origin, RETAIN_UNIQUE
        - DedupeResponseHeader=Access-Control-Allow-Origin, RETAIN_FIRST

原帖鏈接

至于帖子中寫的解決cookie跨域問題,,,我試了,似乎沒有效果,一樣報(bào)跨域錯(cuò)誤,于是我在配置類嘗試著找相關(guān)方法,還真有!

只需要在配置類里添加以一段設(shè)置cookie允許跨域的配置(已經(jīng)在上面的配置方法里補(bǔ)充了cookie跨域代碼)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java異步編程CompletableFuture使用示例詳解

    java異步編程CompletableFuture使用示例詳解

    這篇文章主要為大家介紹了java異步編程CompletableFuture使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java統(tǒng)計(jì)輸入字符的英文字母、空格、數(shù)字和其它

    Java統(tǒng)計(jì)輸入字符的英文字母、空格、數(shù)字和其它

    這篇文章主要介紹了Java統(tǒng)計(jì)輸入字符的英文字母、空格、數(shù)字和其它,需要的朋友可以參考下
    2017-02-02
  • Idea 配置國內(nèi) Maven 源的圖文教程

    Idea 配置國內(nèi) Maven 源的圖文教程

    這篇文章主要介紹了Idea 配置國內(nèi) Maven 源的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11
  • Java排序算法之冒泡排序的原理及優(yōu)化

    Java排序算法之冒泡排序的原理及優(yōu)化

    這篇文章主要介紹了Java排序算法之冒泡排序的原理及優(yōu)化,冒泡排序的思想很簡單,遍歷數(shù)組,比較相鄰的兩個(gè)元素,順序錯(cuò)誤就把它們交換,直到整個(gè)數(shù)組排序完成,因?yàn)槊拷?jīng)過一趟排序,越小的元素會經(jīng)交換而慢慢“浮”到數(shù)列的頂端,因此叫做冒泡排序,需要的朋友可以參考下
    2023-11-11
  • Java設(shè)計(jì)模式中的適配器模式

    Java設(shè)計(jì)模式中的適配器模式

    這篇文章主要介紹了Java設(shè)計(jì)模式中的適配器模式, 適配器模式是將一個(gè)類的接口適配成用戶所期待的,一個(gè)適配允許通常因?yàn)榻涌诓患嫒荻荒茉谝黄鸸ぷ鞯念惞ぷ髟谝黄?做法是將類自己的接口包裹在一個(gè)已存在的類中,需要的朋友可以參考下
    2024-01-01
  • Java雙向鏈表的操作

    Java雙向鏈表的操作

    這篇文章主要介紹了Java雙向鏈表的操作,雙向鏈表,對于該鏈表中的任意節(jié)點(diǎn),既可以通過該節(jié)點(diǎn)向前遍歷,也可以通過該節(jié)點(diǎn)向后遍歷,雙向鏈表在實(shí)際工程中應(yīng)用非常廣泛,是使用鏈表這個(gè)結(jié)構(gòu)的首選
    2022-06-06
  • 一次java異步任務(wù)的實(shí)戰(zhàn)記錄

    一次java異步任務(wù)的實(shí)戰(zhàn)記錄

    最近做項(xiàng)目的時(shí)候遇到了一個(gè)小問題,從前臺提交到服務(wù)端A,A調(diào)用服務(wù)端B處理超時(shí),下面這篇文章主要給大家介紹了一次java異步任務(wù)的實(shí)戰(zhàn)記錄,需要的朋友可以參考下
    2022-05-05
  • 詳解Java如何在Array和List之間進(jìn)行轉(zhuǎn)換

    詳解Java如何在Array和List之間進(jìn)行轉(zhuǎn)換

    這篇文章主要為大家介紹了詳解Java如何在Array和List之間進(jìn)行轉(zhuǎn)換的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • java使用randomaccessfile在文件任意位置寫入數(shù)據(jù)

    java使用randomaccessfile在文件任意位置寫入數(shù)據(jù)

    Java在文件任意位置寫入數(shù)據(jù)可以使用RandomAccessFile方法來完成,下面看一個(gè)簡單的示例就明白了
    2014-01-01
  • Springboot+mybatis-plus+注解實(shí)現(xiàn)數(shù)據(jù)權(quán)限隔離

    Springboot+mybatis-plus+注解實(shí)現(xiàn)數(shù)據(jù)權(quán)限隔離

    本文將結(jié)合實(shí)例代碼,介紹Springboot+mybatis-plus+注解實(shí)現(xiàn)數(shù)據(jù)權(quán)限隔離,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07

最新評論