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

解決SpringBoot自定義攔截器和跨域配置沖突的問(wèn)題

 更新時(shí)間:2021年08月20日 14:53:12   作者:G·S  
這篇文章主要介紹了解決SpringBoot自定義攔截器和跨域配置沖突的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot自定義攔截器和跨域配置沖突

技術(shù)棧

vue-cli3,springboot 2.3.2.RELEASE

問(wèn)題引出

在做畢業(yè)設(shè)計(jì)過(guò)程中用到了自定義攔截器驗(yàn)證登錄。同時(shí)在springboot配置類中設(shè)置了跨域問(wèn)題,出現(xiàn)跨域失敗的情況。

原代碼

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .maxAge(3600);
        super.addCorsMappings(registry);
    }
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AuthInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/login/*","/register/*");
    }
}

經(jīng)過(guò)了解和排查發(fā)現(xiàn),當(dāng)有請(qǐng)求發(fā)送到后臺(tái)時(shí),先被自定義攔截器攔截,如果攔截器驗(yàn)證沒(méi)有問(wèn)題,才會(huì)開(kāi)始執(zhí)行跨域配置。因此解決辦法是讓跨域配置在自定義攔截器之前執(zhí)行。而Filter的執(zhí)行順序大于自定義攔截器,因此可以在Filter中實(shí)現(xiàn)跨域的配置。

新代碼

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AuthInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/login/*","/register/*");
    }
}

添加Filter

@Configuration
public class MyCorsFilter{
    private CorsConfiguration corsConfig(){
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.setMaxAge(3600L);
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }
    @Bean
    public CorsFilter corsFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",corsConfig());
        return new CorsFilter(source);
    }
}

SpringBoot 攔截器和addCorsMappings沖突

項(xiàng)目中最開(kāi)始跨域問(wèn)題是通過(guò)自定義過(guò)濾器CorsFilter對(duì)request處理的,可以很好的解決問(wèn)題?! ?/p>

最近,新項(xiàng)目中準(zhǔn)備通過(guò)如下代碼解決跨域問(wèn)題,結(jié)果發(fā)現(xiàn)登錄超時(shí)的錯(cuò)誤會(huì)出現(xiàn)跨域問(wèn)題,其他問(wèn)題都不會(huì)。

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
    }
}

因?yàn)榈卿洺瑫r(shí)的檢查是在攔截器中,所以推測(cè)是可能是攔截器的執(zhí)行在addCorsMappings生效之前。將CorsFilter代碼拿到項(xiàng)目中后,果然沒(méi)有這個(gè)問(wèn)題了。所以這個(gè)bu基本上可以認(rèn)定是是攔截器和addCorsMappings生效順序的問(wèn)題。

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

相關(guān)文章

  • Java利用Swagger2自動(dòng)生成對(duì)外接口的文檔

    Java利用Swagger2自動(dòng)生成對(duì)外接口的文檔

    這篇文章主要介紹了Java利用Swagger2自動(dòng)生成對(duì)外接口的文檔,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • java中的值傳遞和引用傳遞的區(qū)別分析

    java中的值傳遞和引用傳遞的區(qū)別分析

    本文介紹了“java中的值傳遞和引用傳遞的區(qū)別分析”,需要的朋友可以參考一下
    2013-03-03
  • 阿里巴巴 Sentinel + InfluxDB + Chronograf 實(shí)現(xiàn)監(jiān)控大屏

    阿里巴巴 Sentinel + InfluxDB + Chronograf 實(shí)現(xiàn)監(jiān)控大屏

    這篇文章主要介紹了阿里巴巴 Sentinel + InfluxDB + Chronograf 實(shí)現(xiàn)監(jiān)控大屏,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java實(shí)現(xiàn)表達(dá)式二叉樹(shù)

    Java實(shí)現(xiàn)表達(dá)式二叉樹(shù)

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)表達(dá)式二叉樹(shù),感興趣的小伙伴們可以參考一下
    2016-08-08
  • 一文詳解Java中Map和Set接口的使用方法

    一文詳解Java中Map和Set接口的使用方法

    Map和set是一種專門(mén)用來(lái)進(jìn)行搜索的容器或者數(shù)據(jù)結(jié)構(gòu),其搜索的效率與其具體的實(shí)例化子類有關(guān),可能在查找時(shí)進(jìn)行一些插入和刪除的操作,即動(dòng)態(tài)查找,那上述兩種方式就不太適合了,本節(jié)介紹的Map和Set是一種適合動(dòng)態(tài)查找的集合容器,需要的朋友可以參考下
    2024-08-08
  • Java線程之程安全與不安全代碼示例

    Java線程之程安全與不安全代碼示例

    這篇文章主要介紹了Java線程之程安全與不安全代碼示例,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • Java中List集合去除重復(fù)數(shù)據(jù)的方法匯總

    Java中List集合去除重復(fù)數(shù)據(jù)的方法匯總

    這篇文章主要給大家介紹了關(guān)于Java中List集合去除重復(fù)數(shù)據(jù)的方法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Java微服務(wù)Nacos Config配置中心超詳細(xì)講解

    Java微服務(wù)Nacos Config配置中心超詳細(xì)講解

    配置文件相對(duì)分散。在一個(gè)微服務(wù)架構(gòu)下,配置文件會(huì)隨著微服務(wù)的增多變的越來(lái)越多,而且分散 在各個(gè)微服務(wù)中,不好統(tǒng)一配置和管理。每一個(gè)環(huán)境所使用的配置理論上都是不同的,一旦需要修改,就需要我們?nèi)ジ鱾€(gè)微服務(wù)下手動(dòng)維護(hù)
    2023-02-02
  • SpringBoot參數(shù)校驗(yàn)示例詳解

    SpringBoot參數(shù)校驗(yàn)示例詳解

    SpringBoot自帶了validation工具可以從后端對(duì)前端傳來(lái)的參數(shù)進(jìn)行校驗(yàn),本文給大家介紹SpringBoot參數(shù)校驗(yàn)及用法,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 如何解決java壓縮文件亂碼問(wèn)題

    如何解決java壓縮文件亂碼問(wèn)題

    在本篇文章中我們給大家分享的是一篇關(guān)于java壓縮文件亂碼問(wèn)題的解決辦法,有需要的朋友們可以學(xué)習(xí)下。
    2019-12-12

最新評(píng)論