群聊公告获取cookie无效问题 - 首次登陆可以获取, 退出APP, 重新进入后获取群聊公告失败

gaocunbin 2021-5-15 670

我们后台服务打日志发现: 

前端Android APP, 调用群聊公告获取的接口, 每次都会进入getSessionId()这个函数

请问Android前端这个cookies的机制是如何的? 如何保证cookies的内容不被清理?

首次“群聊公告”获取正常日志如下

-----In getSessionId----- hearders:org.apache.tomcat.util.http.NamesEnumerator@69336208 cookies:afdac00c7d234b5db152e94d4bb4d3a8 super:afdac00c7d234b5db152e94d4bb4d3a8 -----In getSessionId----- hearders:org.apache.tomcat.util.http.NamesEnumerator@71666b99 cookies:afdac00c7d234b5db152e94d4bb4d3a8 super:afdac00c7d234b5db152e94d4bb4d3a8

后续“群聊公告”获取失败日志如下

2021-05-15 18:41:13.141  INFO 19215 --- [nio-8888-exec-6] cn.wildfirechat.app.ServiceImpl          : send message success -----In getSessionId----- hearders:org.apache.tomcat.util.http.NamesEnumerator@5eb574c2 cookies:null super:null

上传的附件:
最新回复 (2)
  • HeavyRain 2021-5-16
    引用 2
    看一下客户端登录成功后有没有保存好cookies,后面请求群公告的时候有没有带上登录成功的cookies。如果都没有问题,那就是需要后端来查的了。

    后端就是应用服务,都是开源的,可以查一下为什么cookies没有生效
  • gaocunbin 2021-5-16
    引用 3
    我在OKHttpHelper这个类里saveFromResponse和loadForRequest打印url和cookie, 发现一个现象
    请求
    2021-05-16 10:05:01.261 9283-8986/com.cosmo.cosmooa E/Alex loadForRequest1: http://106.14.116.170:8888/login
    2021-05-16 10:05:01.261 9283-8986/com.cosmo.cosmooa E/Alex loadForRequest2: JSESSIONID=1969c8273fed4d7d8b3fb819f9d70a41; expires=Fri, 03 Jun 2089 05:17:54 GMT; path=/; httponlyrememberMe=deleteMe; max-age=0; path=/
    2021-05-16 10:05:01.261 9283-8986/com.cosmo.cosmooa E/Alex loadForRequest3: JSESSIONID=1969c8273fed4d7d8b3fb819f9d70a41; expires=Fri, 03 Jun 2089 05:17:54 GMT; path=/; httponlyrememberMe=deleteMe; max-age=0; path=/
    返回
    2021-05-16 10:05:01.709 9283-8986/com.cosmo.cosmooa E/Alex saveFromResponse1: http://106.14.116.170:8888/login
    2021-05-16 10:05:01.709 9283-8986/com.cosmo.cosmooa E/Alex saveFromResponse2: nullrememberMe=deleteMe; max-age=0; path=/
    2021-05-16 10:05:01.710 9283-8986/com.cosmo.cosmooa E/Alex saveFromResponse3: AppContext is not null

    ===》这种情况下, 后续获取收藏列表和群公告的接口都会失败

    再次调用login后, 接口又发生变化
    请求
    2021-05-16 10:07:30.759 9283-11173/com.cosmo.cosmooa E/Alex loadForRequest1: http://106.14.116.170:8888/login
    2021-05-16 10:07:30.759 9283-11173/com.cosmo.cosmooa E/Alex loadForRequest2: rememberMe=deleteMe; max-age=0; path=/
    2021-05-16 10:07:30.759 9283-11173/com.cosmo.cosmooa E/Alex loadForRequest3: rememberMe=deleteMe; max-age=0; path=/
    返回
    2021-05-16 10:07:31.036 9283-11173/com.cosmo.cosmooa E/Alex saveFromResponse1: http://106.14.116.170:8888/login
    2021-05-16 10:07:31.038 9283-11173/com.cosmo.cosmooa E/Alex saveFromResponse2: nullJSESSIONID=3ef69936ded148038cd5d617854f9a4f; expires=Fri, 03 Jun 2089 05:21:38 GMT; path=/; httponlyrememberMe=deleteMe; max-age=0; path=/
    2021-05-16 10:07:31.038 9283-11173/com.cosmo.cosmooa E/Alex saveFromResponse3: AppContext is not null
    2021-05-16 10:07:31.200 9283-8529/com.cosmo.cosmooa W/System: A resource failed to call dispose. 

    ===》 此时再调用收藏列表和群公告就会正常

    请问, 这个login的接口只能调用一次吗?
    还是说咱们的OKHttpHelper遇到了, 类似https://www.jianshu.com/p/02d3714edd30这里提到的问题?
返回