最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot過濾器執(zhí)行兩次的解決及跨域過濾器問題

 更新時間:2023年12月11日 10:35:47   作者:源人生之路  
這篇文章主要介紹了springboot過濾器執(zhí)行兩次的解決及跨域過濾器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

springboot過濾器執(zhí)行兩次的解決及跨域過濾器

在進(jìn)行springboot整合過濾器的過程中可能會遇到過濾器執(zhí)行兩次的問題

針對這個問題可能出現(xiàn)的一種原因就是因為在請求執(zhí)行完之后瀏覽器會再發(fā)一次請求.ico的請求

解決的方法就是在執(zhí)行過濾器方法之前再加一層判斷就好了.

HttpServletRequest request = (HttpServletRequest)servletRequest;
if (request.getRequestURL().toString().matches(".+.ico$")) {
     filterChain.doFilter(servletRequest, servletResponse);
 } else {
     // do something yourself
     filterChain.doFilter(servletRequest, servletResponse);
 }

在不使用框架提供的跨域的方案的情況下可以自己注冊一個通用的跨域請求過濾器,具體的代碼如下

首先先注冊一個過濾器

到springboot

@Bean
    public FilterRegistrationBean corsFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        CorsFilter corsFilter = new CorsFilter();
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.setFilter(corsFilter);
        return filterRegistrationBean;
    }

具體過濾器的代碼

如下

public class CorsFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        if (request.getRequestURL().toString().matches(".+.ico$")) {
            filterChain.doFilter(servletRequest, servletResponse);
        } else {
            String origin = request.getHeader("Origin");
	       // 簡單請求跨域,如果是跨域請求在響應(yīng)頭里面添加對應(yīng)的Origin
	        if (!StringUtils.isEmpty(origin)) {
	            response.addHeader("Access-Control-Allow-Origin", origin);
	        }
	        // 非簡單請求跨域
	        response.addHeader("Access-Control-Allow-Headers", "content-type");
	        // 允許跨域請求的方法
	        response.addHeader("Access-Control-Allow-Methods", "*");
	        // 預(yù)檢命令緩存 1小時
	//        response.addHeader("Access-Control-Max-Age", "3600");
	        // 攜帶cookie的跨域
	        response.addHeader("Access-Control-Allow-Credentials", "true");
	        // 放行方法
	        filterChain.doFilter(servletRequest, servletResponse);
        }
    }
    @Override
    public void destroy() {
    }
}

總結(jié)

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

相關(guān)文章

  • JVM進(jìn)階教程之字段訪問優(yōu)化淺析

    JVM進(jìn)階教程之字段訪問優(yōu)化淺析

    這篇文章主要給大家介紹了關(guān)于JVM進(jìn)階教程之字段訪問優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • MybatisPlus 主鍵策略之type=IdType.ASSIGN_ID等詳解

    MybatisPlus 主鍵策略之type=IdType.ASSIGN_ID等詳解

    雪花算法(雪花)是微博開源的分布式ID生成算法其核心思想就是:使用一個64位的長型的數(shù)字作為全局唯一ID,這篇文章主要介紹了MybatisPlus 主鍵策略(type=IdType.ASSIGN_ID等詳解),需要的朋友可以參考下
    2024-04-04
  • Java Scala之模式匹配與隱式轉(zhuǎn)換

    Java Scala之模式匹配與隱式轉(zhuǎn)換

    在Java中我們有switch case default這三個組成的基礎(chǔ)語法,在Scala中我們是有match和case組成 default的作用由case代替,本文詳細(xì)介紹了Scala的模式匹配與隱式轉(zhuǎn)換,感興趣的可以參考本文
    2023-04-04
  • 詳解Mybatis極其(最)簡(好)單(用)的一個分頁插件

    詳解Mybatis極其(最)簡(好)單(用)的一個分頁插件

    這篇文章主要介紹了詳解Mybatis極其(最)簡(好)單(用)的一個分頁插件,非常具有實用價值,需要的朋友可以參考下。
    2016-12-12
  • JavaWeb應(yīng)用實例:用servlet實現(xiàn)oracle 基本增刪改查

    JavaWeb應(yīng)用實例:用servlet實現(xiàn)oracle 基本增刪改查

    本篇文章主要介紹了JavaWeb應(yīng)用實例:用servlet實現(xiàn)oracle 基本增刪改查,非常具有實用價值,需要的朋友可以參考下。
    2017-01-01
  • SpringBoot整合接口管理工具Swagger

    SpringBoot整合接口管理工具Swagger

    ? Swagger是一系列 RESTful API的工具,通過Swagger可以獲得項目的?種交互式文檔,客戶端SDK的自動生成等功能。本文通過代碼示例詳細(xì)介紹了SpringBoot整合接口管理工具Swagger,需要的朋友可以借鑒參考
    2023-04-04
  • java判定數(shù)組或集合是否存在某個元素的實例

    java判定數(shù)組或集合是否存在某個元素的實例

    下面小編就為大家?guī)硪黄猨ava判定數(shù)組或集合是否存在某個元素的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Java實現(xiàn)自定義自旋鎖代碼實例

    Java實現(xiàn)自定義自旋鎖代碼實例

    這篇文章主要介紹了Java實現(xiàn)自定義自旋鎖代碼實例,Java自旋鎖是一種線程同步機制,它允許線程在獲取鎖時不立即阻塞,而是通過循環(huán)不斷嘗試獲取鎖,直到成功獲取為止,自旋鎖適用于鎖競爭激烈但持有鎖的時間很短的情況,需要的朋友可以參考下
    2023-10-10
  • SpringBoot在Controller層接收參數(shù)的n種姿勢(超詳細(xì))

    SpringBoot在Controller層接收參數(shù)的n種姿勢(超詳細(xì))

    這篇文章主要介紹了SpringBoot在Controller層接收參數(shù)的常用方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • mybatis通過XML的方式拼接動態(tài)sql

    mybatis通過XML的方式拼接動態(tài)sql

    動態(tài)SQL是一種在運行時構(gòu)造和執(zhí)行SQL語句的技術(shù),這篇文章主要為大家介紹了mybatis如何通過XML的方式拼接動態(tài)sql,有需要的小伙伴可以參考一下
    2024-12-12

最新評論

喀喇沁旗| 鄂托克旗| 泰顺县| 池州市| 大冶市| 德保县| 聂荣县| 涞源县| 韩城市| 格尔木市| 马边| 澳门| 湘潭市| 天全县| 淮阳县| 新昌县| 林甸县| 额济纳旗| 台南县| 普陀区| 峨眉山市| 仁寿县| 青神县| 明溪县| 柯坪县| 长泰县| 鹿泉市| 衡阳县| 秀山| 临邑县| 肥乡县| 永州市| 湟中县| 于都县| 左权县| 凤庆县| 双城市| 赫章县| 富锦市| 潍坊市| 华蓥市|