如何从听众那里获取 Cookie?

Posted

技术标签:

【中文标题】如何从听众那里获取 Cookie?【英文标题】:How to get the Cookies from listeners? 【发布时间】:2021-06-19 20:28:37 【问题描述】:

我制作了一个应用程序,我想在有新会话时立即获取 cookie。我用会话监听器尝试过,但没有奏效。我用请求监听器尝试了它,但在 cookies 数组中得到了一个空值。 这是来自请求侦听器的代码,每次都让我为空

public void requestInitialized(ServletRequestEvent sre) 
    
    HttpServletRequest req=(HttpServletRequest)sre.getServletRequest();
    if(req.getSession().isNew())
    
        Cookie c[]=req.getCookies();
        try
        
            for (Cookie co:c)
            
                System.out.println(co.getName());
                System.out.println(co.getValue());
            
        
        catch(Exception e)
        
            System.out.println("error: "+ e.getMessage());
        
    

【问题讨论】:

您能否用您尝试过的代码示例来扩展这个问题? @IllyaKysil 我把它,任何帮助 您能确认一下cookies确实是由客户端发送的吗?如果请求中没有 cookie,则 HttpServletRequest#getCookies() 返回 null - docs.oracle.com/javaee/6/api/javax/servlet/http/… 我打开了浏览器的cookies,它们已经在那里,我尝试了过滤器中的代码,它工作了 【参考方案1】:

HttpServletRequest.getCookies() 返回请求中提供的 cookie - 如HttpServletRequest's javadoc 中所述。

当 servlet 容器创建新会话时,通常意味着要么没有提供 cookie(会话未知),要么存在会话 cookie,但会话本身已过期。

有关标准会话语义和生命周期的完整说明,请查看Java™ Servlet Specification 的第 7.1 节会话跟踪机制。

【讨论】:

【参考方案2】:

我想通了,问题出在 chrome 上。在我向响应中添加标头“Expires”之前,它会将 cookie 视为会话 cookie

【讨论】:

以上是关于如何从听众那里获取 Cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何按城市获取 Spotify 艺术家听众和关注者

如何从 WKWebView 获取 cookie?

如何使用 oauth 从用户那里获取详细信息? [关闭]

如何从用户那里获取字母表

如何从 HttpClient 获取 cookie?

如何从 CGI::Cookie.parse 中获取 cookie 值?