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

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

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

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

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

針對(duì)這個(gè)問題可能出現(xiàn)的一種原因就是因?yàn)樵谡?qǐng)求執(zhí)行完之后瀏覽器會(huì)再發(fā)一次請(qǐng)求.ico的請(qǐng)求

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

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

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

首先先注冊(cè)一個(gè)過濾器

到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");
	       // 簡(jiǎn)單請(qǐng)求跨域,如果是跨域請(qǐng)求在響應(yīng)頭里面添加對(duì)應(yīng)的Origin
	        if (!StringUtils.isEmpty(origin)) {
	            response.addHeader("Access-Control-Allow-Origin", origin);
	        }
	        // 非簡(jiǎn)單請(qǐng)求跨域
	        response.addHeader("Access-Control-Allow-Headers", "content-type");
	        // 允許跨域請(qǐng)求的方法
	        response.addHeader("Access-Control-Allow-Methods", "*");
	        // 預(yù)檢命令緩存 1小時(shí)
	//        response.addHeader("Access-Control-Max-Age", "3600");
	        // 攜帶cookie的跨域
	        response.addHeader("Access-Control-Allow-Credentials", "true");
	        // 放行方法
	        filterChain.doFilter(servletRequest, servletResponse);
        }
    }
    @Override
    public void destroy() {
    }
}

總結(jié)

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

相關(guān)文章

  • MyBatis-Plus通用CRUD操作的實(shí)現(xiàn)

    MyBatis-Plus通用CRUD操作的實(shí)現(xiàn)

    MyBatis-Plus是基于MyBatis的增強(qiáng)工具,主要目的是簡(jiǎn)化MyBatis的使用并提升開發(fā)效率,它提供了通可以用CRUD操作、分頁插件、多種插件支持、自動(dòng)代碼生成器等功能,感興趣的可以了解一下
    2024-10-10
  • java編程實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲示例過程

    java編程實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲示例過程

    這篇文章主要為大家介紹了如何使用java編程實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • 詳解Java語言中的抽象類與繼承

    詳解Java語言中的抽象類與繼承

    這篇文章主要為大家詳細(xì)介紹了Java語言中的抽象類與繼承的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,感興趣的小伙伴快跟隨小編一起了解一下
    2022-10-10
  • java處理日期的工具類DateUtil

    java處理日期的工具類DateUtil

    這篇文章主要為大家詳細(xì)介紹了java處理日期的工具類DateUtil,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Java中實(shí)現(xiàn)代碼優(yōu)化的技巧分享

    Java中實(shí)現(xiàn)代碼優(yōu)化的技巧分享

    這篇文章主要跟大家談?wù)剝?yōu)化這個(gè)話題,那么我們一起聊聊Java中如何實(shí)現(xiàn)代碼優(yōu)化這個(gè)問題,小編這里有幾個(gè)實(shí)用的小技巧分享給大家,需要的可以參考一下
    2022-08-08
  • spring 整合JDBC和AOP事務(wù)的方法

    spring 整合JDBC和AOP事務(wù)的方法

    這篇文章主要介紹了spring 整合JDBC和AOP事務(wù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Java啟用Azure Linux虛擬機(jī)診斷設(shè)置

    Java啟用Azure Linux虛擬機(jī)診斷設(shè)置

    這篇文章主要介紹了Java啟用Azure Linux虛擬機(jī)診斷設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 深入探究Java中的HashMap為什么會(huì)產(chǎn)生死循環(huán)

    深入探究Java中的HashMap為什么會(huì)產(chǎn)生死循環(huán)

    HashMap?死循環(huán)發(fā)生在?JDK?1.8?之前的版本中,這篇文章主要來和大家深入探究一下為什么Java中HashMap會(huì)產(chǎn)生死循環(huán),感興趣的小伙伴可以了解一下
    2023-05-05
  • Java中如何將String轉(zhuǎn)JSONObject

    Java中如何將String轉(zhuǎn)JSONObject

    這篇文章主要介紹了Java中如何將String轉(zhuǎn)JSONObject,String類型轉(zhuǎn)JSONObject,下面有兩種方式可以進(jìn)行轉(zhuǎn)換,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MyBatisPlus查詢投影與查詢條件詳細(xì)講解

    MyBatisPlus查詢投影與查詢條件詳細(xì)講解

    這篇文章主要介紹了MyBatisPlus DQL編程控制中的查詢投影、查詢條件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論