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

springboot使用filter獲取自定義請(qǐng)求頭的實(shí)現(xiàn)代碼

 更新時(shí)間:2019年05月24日 14:56:09   作者:你都如何回憶我  
這篇文章主要介紹了springboot使用filter獲取自定義請(qǐng)求頭的實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

有個(gè)錢包項(xiàng)目,本來用的是微服務(wù)這一套,后來感覺沒必要,重構(gòu)成了簡單的springboot項(xiàng)目,但是token校驗(yàn)重構(gòu)完之后出問題了,之前寫filter走的是springgateway,基于GatewayFilter實(shí)現(xiàn),重構(gòu)了之后基于filter,然后當(dāng)請(qǐng)求進(jìn)入過濾器的時(shí)候,發(fā)現(xiàn)不能獲取到請(qǐng)求的自定義請(qǐng)求頭。

String token = request.getHeader("token"); // null
String id = request.getHeader("id"); // null
String role = request.getHeader("role"); // null

原因

我在進(jìn)入斷點(diǎn)的時(shí)候查看了一下servletRequest,發(fā)現(xiàn)請(qǐng)求方法是options。 我知道get post delete put。還真不了解options,百度了下。主要參考這篇文章。原來是瀏覽器的同源策略問題,也就是cors,可我一想,我配置了cors啊

@Configuration
public class CorsConfig {
  private CorsConfiguration buildConfig() {
    CorsConfiguration corsConfiguration = new CorsConfiguration();
    corsConfiguration.addAllowedOrigin("*"); // 1
    corsConfiguration.addAllowedHeader("*"); // 2
    corsConfiguration.addAllowedMethod("*"); // 3
    return corsConfiguration;
  }

  @Bean
  public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", buildConfig()); // 4
    return new CorsFilter(source);
  }
}

怎么還報(bào)跨域的問題呢,想起來了我的tokenFilter里因?yàn)槟貌坏秸?qǐng)求頭token,我拋出了參數(shù)異常,然后@RestControllerAdvice跟@ExceptionHandle處理不了filter中拋出的異常,導(dǎo)致程序報(bào)500錯(cuò)誤,然后過濾器是類似于切面的 么,這里斷了導(dǎo)致返回頭也沒加上。

處理

怎么處理瀏覽器發(fā)過來的預(yù)處理 options請(qǐng)求呢,太懶了,直接這樣寫了

HttpServletRequest request= (HttpServletRequest)servletRequest;
    HttpServletResponse res = (HttpServletResponse) servletResponse;
    String method=request.getMethod();
    if(HttpMethod.OPTIONS.toString().equals(method)){
      res.setStatus(HttpStatus.NO_CONTENT.value());
    }else {
      String token = request.getHeader("token");
      String id = request.getHeader("id");
      String role = request.getHeader("role");
      ~~~~~~~

回想

我記得我上個(gè)項(xiàng)目也沒處理options請(qǐng)求啊,怎么沒報(bào)cors問題啊,對(duì)了我記得我在nginx處理過了

if ($request_method = 'OPTIONS') {
 return 204;
}
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, PATCH, DELETE, HEAD" always;
add_header Access-Control-Max-Age 86400 always;

原來自己又寫前端,也寫后端,怎么這些問題還能碰到呢,:relieved:,前輩們都寫好了,自己還沒遇到問題也沒深入過,還有springcloud里面的corsWebFilter怎么就跟springboot里面的corsFilter不一樣呢。

@Configuration
public class CorsConfig {
  @Bean
  public CorsWebFilter corsFilter() {
    CorsConfiguration config = new CorsConfiguration();
    config.addAllowedMethod("*");
    config.addAllowedOrigin("*");
    config.addAllowedHeader("*");

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

    return new CorsWebFilter(source);
  }
}

還是得多看源碼啊,我這個(gè)crudboy

總結(jié)

以上所述是小編給大家介紹的springboot使用filter獲取自定義請(qǐng)求頭的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java常量池詳解

    Java常量池詳解

    下面小編就為大家?guī)硪黄獪\談java常量池。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-09-09
  • Java Swing窗體關(guān)閉事件的調(diào)用關(guān)系

    Java Swing窗體關(guān)閉事件的調(diào)用關(guān)系

    這篇文章主要為大家詳細(xì)介紹了Java Swing窗體關(guān)閉事件的調(diào)用關(guān)系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java快速排序的實(shí)現(xiàn)詳細(xì)代碼及通俗解釋

    Java快速排序的實(shí)現(xiàn)詳細(xì)代碼及通俗解釋

    這篇文章主要介紹了Java快速排序?qū)崿F(xiàn)的相關(guān)資料,快速排序是一種高效的排序算法,通過選擇一個(gè)基準(zhǔn)值將數(shù)組分成兩部分,左邊的元素比基準(zhǔn)值小,右邊的元素比基準(zhǔn)值大,然后遞歸地對(duì)這兩部分進(jìn)行排序,需要的朋友可以參考下
    2025-02-02
  • 通過一個(gè)命令輕松切換Java的版本

    通過一個(gè)命令輕松切換Java的版本

    這篇文章主要給大家介紹了如何通過一個(gè)命令輕松實(shí)現(xiàn)切換Java的版本,通過本文介紹的方法,大家就可以將jdk版本之間輕松切換,需要的朋友可以參考學(xué)習(xí),下面跟著小編一起來看看吧。
    2017-05-05
  • Maven安裝與配置圖文教程

    Maven安裝與配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了Maven安裝與配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Spring Boot詳解各類請(qǐng)求和響應(yīng)的處理方法

    Spring Boot詳解各類請(qǐng)求和響應(yīng)的處理方法

    平時(shí)只是在用SpringBoot框架,但并沒有詳細(xì)研究過請(qǐng)求和響應(yīng)執(zhí)行的一個(gè)具體過程,所以本文主要來梳理一下SpringBoot請(qǐng)求和響應(yīng)的處理過程
    2022-07-07
  • springboot整合redis之消息隊(duì)列

    springboot整合redis之消息隊(duì)列

    本文主要介紹了springboot整合redis之消息隊(duì)列,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 了解java中的session

    了解java中的session

    這篇文章主要介紹了了解java中的session的相關(guān)問題,什么是session,session怎么用等,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java唯一訂單編號(hào)生成代碼例子

    Java唯一訂單編號(hào)生成代碼例子

    在項(xiàng)目中,我們經(jīng)常遇到需要生成訂單編號(hào)、字典編號(hào)等唯一值場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于Java唯一訂單編號(hào)生成的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn)的實(shí)例代碼

    spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn)的實(shí)例代碼

    最近公司重構(gòu)項(xiàng)目,重構(gòu)為最熱的微服務(wù)框架 spring boot, 重構(gòu)的時(shí)候遇到幾個(gè)可以統(tǒng)一處理的問題。這篇文章主要介紹了spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn) ,需要的朋友可以參考下
    2019-04-04

最新評(píng)論

太保市| 靖安县| 隆昌县| 佳木斯市| 攀枝花市| 璧山县| 郸城县| 宁南县| 桐城市| 南平市| 遂溪县| 浙江省| 德州市| 东莞市| 从化市| 华宁县| 巴彦淖尔市| 肃宁县| 桦甸市| 同仁县| 肥东县| 手机| 武宁县| 新余市| 铜川市| 福鼎市| 额济纳旗| 綦江县| 宜兰县| 漳州市| 湟中县| 饶河县| 咸宁市| 循化| 大渡口区| 永丰县| 昌乐县| 和龙市| 航空| 如东县| 民权县|