問題描述:
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;
}
}