欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS 请求头第二次cookie中获取不到PHPSESSID的问题

程序员文章站 2024-03-17 20:52:04
...

iOS 请求头第二次cookie中获取不到PHPSESSID的问题

最近在项目中让我遇到了一个很蛋疼的问题,我们的App中混合的有H5的界面,但是H5页面也需要对登录信息进行验证。于是我们就用了cookie来解决这个问题。

是不是感觉 So easy,废话不多说直接开整。
首先我们在登录的时候拿到请求头里边的数据。

NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
NSString *cookie = response.allHeaderFields[@"Set-Cookie"];

iOS 请求头第二次cookie中获取不到PHPSESSID的问题

在这里我们很清楚的可以看到首次登录的时候我们是可以拿到服务端返回的PHPSESSID。这样我们就可以把信息存储一下,然后在调用网页的时候把cookie写入了。

然鹅问题就是这么不声不响的来了。我在退出登录再次请求登录之后神奇的事情出现了。网页上要我登录。

iOS 请求头第二次cookie中获取不到PHPSESSID的问题

什么情况是我的cookie失效了吗?懵逼的我赶快去看了下登录请求头中的数据。
iOS 请求头第二次cookie中获取不到PHPSESSID的问题

这个时候我就去找后台大兄弟对质去了,但是他那边的日志报告显示我不光PHPESEEID传了,而且其他的东西也乱了。
后来周折几番才发现犯了个低级错误,在退出登录的时候,仅仅清除了自己本地保存的内容,并没有清除cookie。退出登录意味着清除本地的用户信息,但是此时服务器并不知晓(session 未过期),再次访问的时候还有可能带着cookie里边的信息访问,造成登录用户所访问的假象,所以必须清除cookie
在退出登录的时候加上这段代码

NSURL *url = [NSURL URLWithString:@"你的服务器地址"];
if (url) {
    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url];
    for (int i = 0; i < [cookies count]; i++) {
        NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
    }
}

之后再次登录PHPSESSID又出现了,问题解决。