java.lang.IllegalArgumentException:Cookie 值中存在无效字符 [34]
java.lang.IllegalArgumentException:An invalid character [34] was present in the Cookie value
这是我的 tomcat-users 文件的样子:
<tomcat-users>
<role rolename="admin"/>
<role rolename="analyst"/>
<role rolename="user"/>
<role rolename="kie-server"/>
<role rolename="developer"/>
<role rolename="manager"/>
<user username="w" password="w" roles="admin"/>
<user username="k" password="k" roles="kie-server"/>
<user username="u" password="u" roles="user,developer,analyst"/>
</tomcat-users>
在 KIE IDE WORKBENCH 中输入正确的凭据后,出现以下异常:
java.lang.IllegalArgumentException: An invalid character [34] was present in the Cookie value
org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:182)
org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:115)
org.apache.catalina.connector.Response.generateCookieString(Response.java:1019)
org.apache.catalina.connector.Response.addCookie(Response.java:967)
org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:386)
org.uberfire.ext.security.server.SecurityIntegrationFilter.doFilter(SecurityIntegrationFilter.java:61)
CookieProcessor 是一个新的配置元素,在 Tomcat 8.0.15 中引入。
CookieProcessor 元素允许在每个 Web 应用程序中或全局默认 conf/context.xml 文件中进行不同的 cookie 解析配置。
根据 Apache 的官方文档 Tomcat 8 配置参考
版本 8.0.47:
CookieProcessor 的标准实现是:org.apache.tomcat.util.http.LegacyCookieProcessor。请注意,预计这将在未来的 Tomcat 8 版本中更改为 org.apache.tomcat.util.http.Rfc6265CookieProcessor。
稍后..
根据 Apache 的官方文档 Tomcat 8 配置参考
版本 8.5.23
CookieProcessor 的标准实现是org.apache.tomcat.util.http.Rfc6265CookieProcessor
要解决此问题:在 conf/context.xml 中的位置 %CATALINA_HOME% 添加此行(即 C:\apache-tomcat-8.5.20\conf\context.xml 在我的例子中):
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
这是添加后的样子:
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Transaction factory="bitronix.tm.BitronixUserTransactionObjectFactory"/>
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
</Context>
这是我的 tomcat-users 文件的样子:
<tomcat-users>
<role rolename="admin"/>
<role rolename="analyst"/>
<role rolename="user"/>
<role rolename="kie-server"/>
<role rolename="developer"/>
<role rolename="manager"/>
<user username="w" password="w" roles="admin"/>
<user username="k" password="k" roles="kie-server"/>
<user username="u" password="u" roles="user,developer,analyst"/>
</tomcat-users>
在 KIE IDE WORKBENCH 中输入正确的凭据后,出现以下异常:
java.lang.IllegalArgumentException: An invalid character [34] was present in the Cookie value
org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:182)
org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:115)
org.apache.catalina.connector.Response.generateCookieString(Response.java:1019)
org.apache.catalina.connector.Response.addCookie(Response.java:967)
org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:386)
org.uberfire.ext.security.server.SecurityIntegrationFilter.doFilter(SecurityIntegrationFilter.java:61)
CookieProcessor 是一个新的配置元素,在 Tomcat 8.0.15 中引入。 CookieProcessor 元素允许在每个 Web 应用程序中或全局默认 conf/context.xml 文件中进行不同的 cookie 解析配置。
根据 Apache 的官方文档 Tomcat 8 配置参考 版本 8.0.47:
CookieProcessor 的标准实现是:org.apache.tomcat.util.http.LegacyCookieProcessor。请注意,预计这将在未来的 Tomcat 8 版本中更改为 org.apache.tomcat.util.http.Rfc6265CookieProcessor。
稍后..
根据 Apache 的官方文档 Tomcat 8 配置参考 版本 8.5.23
CookieProcessor 的标准实现是org.apache.tomcat.util.http.Rfc6265CookieProcessor
要解决此问题:在 conf/context.xml 中的位置 %CATALINA_HOME% 添加此行(即 C:\apache-tomcat-8.5.20\conf\context.xml 在我的例子中):
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
这是添加后的样子:
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Transaction factory="bitronix.tm.BitronixUserTransactionObjectFactory"/>
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
</Context>