gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:51:06 32 4
gpt4 key购买 nike

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

我有一台带有 ServletExec 的服务器,其中等号字符被自动丢弃(它使用的是 cookie 版本 0?)。我有 2 台其他带有 ServletExec 和 Tomcat 的服务器,其中不丢弃等号字符(显然他们使用的是 cookie 版本 1?)。我不知道为什么他们的行为不同。

所以我只需要帮助找到设置 cookie 版本的 servlet 配置,或者启用/禁用丢弃我的 cookie 中的等号字符。 TIA!

最佳答案

我会说它与 Tomcat 配置有关,而不是与 servlet 相关。

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

要避免这种行为,您可以设置
org.apache.tomcat.util.http.CookieSupport.ALLOW_HTTP_SEPARATORS_IN_V0属性为 true

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

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

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

关于tomcat - 如何设置 java servlet 使用的 cookie 版本(0 或 1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472623/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com