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

springboot中報錯Invalid character found in the request的解決

 更新時間:2022年09月30日 10:36:59   作者:崔雨田  
這篇文章主要介紹了springboot中報錯Invalid character found in the request的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

解決Invalid character found in the request問題

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

原因

SpringBoot 2.0.0 以上都采用內(nèi)置tomcat8.0以上版本,而tomcat8.0以上版本遵從RFC規(guī)范添加了對Url的特殊字符的限制,url中只允許包含英文字母(a-zA-Z)、數(shù)字(0-9)、-_.~四個特殊字符以及保留字符( ! * ’ ( ) ; : @ & = + $ , / ? # [ ] ) (262+10+4+18=84)這84個字符,請求中出現(xiàn)了{}大括號或者[],所以tomcat報錯。

設置RelaxedQueryChars允許此字符(建議),設置requestTargetAllows選項(Tomcat 8.5中不推薦)。

根據(jù)Tomcat文檔,下面提供一種方法來設置松弛的QueryChars屬性*

在啟動類中添加

    @Bean
    public ConfigurableServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                connector.setProperty("relaxedQueryChars", "|{}[]");
            }
        });
        return factory;
    }

springboot項目報錯問題

java.lang.IllegalArgumentException:Invalid character found in the request target.

原因

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

高版本tomcat中的新特性:就是嚴格按照 RFC 3986規(guī)范進行訪問解析,而 RFC 3986規(guī)范定義了Url中只允許包含英文字母(a-zA-Z)、數(shù)字(0-9)、-_.~4個特殊字符以及所有保留字符(RFC3986中指定了以下字符為保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。

springboot默認集成了tomcat,tomcat然后當你前端發(fā)送請求,請求參數(shù)中有保留的特殊字符時,就會報如下錯

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
        at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:472)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:683)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

有兩種解決方法

  • 一種降低tomcat版本(不建議),這里就不寫了
  • 另一種是在SpringBoot中增加tomcat配置

在config中新建一個TomcatConfig類

@Configuration
public class TomcatConfig {
? ? @Bean
? ? public TomcatServletWebServerFactory webServerFactory() {
? ? ? ? TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
? ? ? ? factory.addConnectorCustomizers((Connector connector) -> {
? ? ? ? ? ? connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
? ? ? ? ? ? connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
? ? ? ? });
? ? ? ? return factory;
? ? }
}

然后重啟項目測試,問題解決

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

相關文章

  • 詳細總結各種排序算法(Java實現(xiàn))

    詳細總結各種排序算法(Java實現(xiàn))

    下面小編就為大家?guī)硪黄敿毧偨Y各種排序算法(Java實現(xiàn))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 關于@MapperScan和@ComponentScan的使用問題

    關于@MapperScan和@ComponentScan的使用問題

    文章介紹了在使用`@MapperScan`和`@ComponentScan`時可能會遇到的包掃描沖突問題,并提供了解決方法,同時,還詳細解釋了`@MapperScan`和`@ComponentScan`的功能和使用場景
    2025-01-01
  • Java8 Stream flatmap中間操作用法解析

    Java8 Stream flatmap中間操作用法解析

    這篇文章主要介紹了Java8 Stream flatmap中間操作用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot自定義bean綁定實現(xiàn)

    SpringBoot自定義bean綁定實現(xiàn)

    這篇文章主要介紹了SpringBoot自定義bean綁定,最常見的配置綁定的場景,是在自定義的bean中通過@Value注解將某個屬性和對應的配置綁定
    2022-10-10
  • springboot整合shiro實現(xiàn)登錄驗證授權的過程解析

    springboot整合shiro實現(xiàn)登錄驗證授權的過程解析

    這篇文章主要介紹了springboot整合shiro實現(xiàn)登錄驗證授權,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • spring配置文件解析失敗報”cvc-elt.1: 找不到元素 ''''beans'''' 的聲明”異常解決

    spring配置文件解析失敗報”cvc-elt.1: 找不到元素 ''''beans'''' 的聲明”異常解決

    這篇文章主要給大家介紹了關于spring配置文件解析失敗報”cvc-elt.1: 找不到元素 'beans' 的聲明”異常的解決方法,需要的朋友可以參考下
    2020-08-08
  • 淺談spring 常用注解

    淺談spring 常用注解

    這篇文章主要介紹了淺談spring 常用注解,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java的設計模式編程中迪米特法則的應用示例

    Java的設計模式編程中迪米特法則的應用示例

    這篇文章主要介紹了Java的設計模式編程中迪米特法則的應用示例,迪米特法則中主張創(chuàng)建和使用弱耦合的類,需要的朋友可以參考下
    2016-02-02
  • SpringCloud Netflix Ribbon源碼解析(推薦)

    SpringCloud Netflix Ribbon源碼解析(推薦)

    這篇文章主要介紹了SpringCloud Netflix Ribbon源碼解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Spring AI源碼分析流式回答(最新推薦)

    Spring AI源碼分析流式回答(最新推薦)

    本文我們將重點講解流式響應的概念與實現(xiàn),畢竟,AI的流式回答功能與其交互體驗密切相關,是提升用戶滿意度的重要組成部分,我們將通過代碼示例來展示這一過程,幫助您更清晰地理解如何在實際應用中進行操作,感興趣的朋友一起看看吧
    2024-11-11

最新評論

宾阳县| 诸暨市| 湘乡市| 玉龙| 永胜县| 苍溪县| 焦作市| 牙克石市| 谢通门县| 高雄市| 鹤峰县| 牙克石市| 县级市| 锡林浩特市| 南投县| 栾川县| 喀什市| 通河县| 金沙县| 手游| 桦川县| 龙川县| 若羌县| 景谷| 东丽区| 同德县| 陵水| 蚌埠市| 赣榆县| 伊春市| 四子王旗| 鄄城县| 大姚县| 云南省| 成都市| 浮梁县| 武义县| 天镇县| 邵阳市| 竹山县| 马公市|