天天看點

More than the maximum allowed number of cookies, [200]問題描述:解決方案:

問題描述:

spring boot 項目 前端通路接口報錯

00:02:07.074 [http-nio-9099-exec-8] ERROR o.a.c.h.Http11Processor - [log,175] - Error processing request
java.lang.IllegalArgumentException: More than the maximum allowed number of cookies, [200], were detected.
	at org.apache.tomcat.util.http.ServerCookies.addCookie(ServerCookies.java:48)
	at org.apache.tomcat.util.http.parser.Cookie.parseCookieRfc6265(Cookie.java:234)
	at org.apache.tomcat.util.http.parser.Cookie.parseCookie(Cookie.java:122)
	at org.apache.tomcat.util.http.Rfc6265CookieProcessor.parseCookieHeader(Rfc6265CookieProcessor.java:90)
	at org.apache.catalina.connector.Request.parseCookies(Request.java:3078)
	at org.apache.catalina.connector.Request.getServerCookies(Request.java:2191)
	at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:1017)
	at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:730)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:337)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
           

解決方案:

cookile的大小預設200,需要更改MaxCookieCount 這個參數的大小,spring boot yml檔案裡沒有MaxCookieCount這個配置項,是以添加一個新的自定義配置類,

@Configuration
public class TomcatCustomizer {

    @Bean
    public ConfigurableServletWebServerFactory configurableServletWebServerFactory(){
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.setProtocol("org.apache.coyote.http11.Http11NioProtocol");
   //     factory.setPort(8850);
        factory.addConnectorCustomizers( connector -> {
            Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
            //protocol.setDisableUploadTimeout(false);//允許執行使用一個較長的連接配接逾時值
            //protocol.setAcceptCount(200);//排隊請求的最大數
            //protocol.setMaxThreads(2);// 最大線程數
            //protocol.setMaxConnections(200);// 最大連接配接數
            //protocol.setMaxHeaderCount(20000);//http請求中header的最大個數
            // protocol.setConnectionTimeout(20000);//設定連接配接的逾時值,以毫秒為機關
            connector.setMaxCookieCount(-1);//  設定Cookie大小 -1不限制
        } );
        return factory;
    }
}