Tomcat 如何设置java servlet使用的cookie版本(0或1)?

Tomcat 如何设置java servlet使用的cookie版本(0或1)?,tomcat,servlets,cookies,Tomcat,Servlets,Cookies,我正在寻找一种方法来配置我的servlet以使用cookie版本0,该版本假定不允许cookie中的等于字符(=)以及其他非URL安全字符 我有一台带有ServletExec的服务器,其中自动丢弃等于字符(它使用的是cookie版本0?)。我还有另外两台服务器,分别带有ServletExec和Tomcat,其中的equals字符没有被丢弃(显然他们使用的是cookie版本1?)。我不知道他们为什么表现不同 因此,我只需要帮助定位设置cookie版本的servlet配置,或者启用/禁用cookie

我正在寻找一种方法来配置我的servlet以使用cookie版本0,该版本假定不允许cookie中的等于字符(=)以及其他非URL安全字符

我有一台带有ServletExec的服务器,其中自动丢弃等于字符(它使用的是cookie版本0?)。我还有另外两台服务器,分别带有ServletExec和Tomcat,其中的equals字符没有被丢弃(显然他们使用的是cookie版本1?)。我不知道他们为什么表现不同


因此,我只需要帮助定位设置cookie版本的servlet配置,或者启用/禁用cookie中的等号字符丢弃。蒂亚

我认为它与Tomcat配置有关,而不是与servlet配置有关

默认情况下,Tomcat尝试解析cookie值,并基于该值尝试“猜测”cookie版本。更详细地说,如果它找到某些特定于版本1的字符,它将自动将cookie version设置为1。 也就是说,即使在servlet中将cookie值设置为0,Tomcat也会在响应呈现期间将其覆盖为1

要避免这种行为,您可以设置
org.apache.tomcat.util.http.CookieSupport.ALLOW_-http_-V0中的分隔符 属性设置为

Tomcat从系统属性获取此属性,即,可以使用设置系统属性、更新catalina.properties或任何其他合适的方式将此属性值设置为true

有关完整的详细信息,请参阅 中的appendCookieValue方法 org.apache.tomcat.util.http.ServerCookie 阶级

PS在CookiesSupport类中还有一个ALLOW_EQUALS_IN_VALUE设置,这可能对您的情况有所帮助