因cookie的path项不正确导致的登录失败

一个reques是否在头中加入一个cookie,依据的就是请求的url和cookie的domain、path两项都匹配,


 NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
                                @"www.google.com", NSHTTPCookieDomain,
                                @"/abc", NSHTTPCookiePath,  // IMPORTANT!
                                @"testCookies", NSHTTPCookieName,
                                @"1", NSHTTPCookieValue,
                                nil];
    NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];


如上面的cookie,
对www.google.com/abc的请求,这个cookie会附加在请求的头中,

对www.google.com/123的请求,则不会加入。


工作中,登录的url是 www.domain.com/user,

取数据的url是www.domain.com/data.

在登录后,无法取得数据,原来,是登录后,服务端返 回的cookie的path是/user。

这个cookie在/data的请求中是不加入头的,因为服务端不知找谁改,所以只好在客户端修改cookie了:



NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:[NSURL URLWithString:urlPath]];
        NSEnumerator *enumerator = [cookies objectEnumerator];
        NSHTTPCookie *cookie;
        while (cookie = [enumerator nextObject])
        {
            if ([[cookie name] isEqualToString:@"JSESSIONID"])
            {
                NSMutableDictionary *propscook = [[NSMutableDictionary alloc] initWithDictionary: [cookie properties]];
                
                
                propscook[@"Path"] = @"/";
                
                [sharedHTTPCookieStorage deleteCookie:cookie];
                
                NSHTTPCookie *newcookie = [NSHTTPCookie cookieWithProperties:propscook];
                [sharedHTTPCookieStorage setCookie:newcookie];
                
                break;
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值