问题描述:
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;
}
}