我正在移植我们的Web认证/授权中间件,以用于实现新servlet 3.0 API(在这种情况下是Glassfish V3)的容器中。在Servlet 3.0中截断cookie名称HttpServletRequest(GlassFish V3)
中间件从cookie“HttpServletRequest”中过滤Cookie,其名称为“DACS:FEDERATION :: JURISDICTION:username”。这在2.5版本servlet API中工作正常,但在3.0版本中被破坏。
3.0中的cookie名称在名称的第一个“:”处被截断。据我所知,servlet 3.0实现默认为RFC 2109 cookie,它比旧的Netscape规范(RFC 2109 cookie名称中不允许使用的字符之一)中的cookie名称更具限制性。
挖掘到servlet 3.0源代码,似乎可以通过将System属性“org.glassfish.web.rfc2109.cookie_names_enforced”设置为false来禁用RFC2109名称的使用。我试过这个无济于事。但除此之外,使用检查cookie名称的代码位于Cookie的构造函数中,并且看起来截断发生在别处。
所以 - 最后 - 问题。让其他人在servlet 3.0 API中遇到这样的问题并找到解决方法?