【问题标题】:How to get correct Set-Cookie headers for NSHTTPURLResponse?如何为 NSHTTPURLResponse 获取正确的 Set-Cookie 标头?
【发布时间】:2010-03-23 14:10:31
【问题描述】:

我想使用以下代码登录一个网站,该网站以下列方式返回其 cookie 信息:

Set-Cookie: 19231234
Set-Cookie: u2am1342340
Set-Cookie: owwjera

我正在使用以下代码登录网站,但最后的打印语句没有输出任何关于“set-cookie”的信息。 在 Snow leopard 上,该库似乎会自动获取该站点的 cookie,并且稍后发出的连接设置为正确的“cookie”标头。但是在 leopard 上,它就不是这样工作的,那么这是“记住某些根 url 的 cookie”行为的触发器吗?

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:uurl]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"keep-live" forHTTPHeaderField:@"Connection"];
[request setValue:@"300" forHTTPHeaderField:@"Keep-Alive"];
[request setHTTPShouldHandleCookies:YES];

[request setHTTPBody:postData];
[request setTimeoutInterval:10.0];

NSData *urlData;
NSHTTPURLResponse *response;
NSError *error;
urlData = [NSURLConnection sendSynchronousRequest:request
                                returningResponse:&response
                                            error:&error];

NSLog(@"response dictionary %@",[response allHeaderFields]);

【问题讨论】:

    标签: cocoa macos nsurlconnection setcookie


    【解决方案1】:
    [request setHTTPShouldHandleCookies:YES];
    

    此行会导致系统为您处理 cookie。

    【讨论】:

    • 由于我没有豹子环境,我的应用程序的豹子用户告诉我它不起作用,即使我包含了这个 [request setHTTPShouldHandleCookies:YES];.
    • 那部分,我不好解释。 HTTPShouldHandleCookies 在至少 10.5 和 10.6 上设置为 YES,我认为一直到 10.2 左右,设置和发送的 cookie 应该来自 Safari 使用的相同 cookie 存储。
    • 我将 [request setHTTPShouldHandleCookies:YES] 放在 set 语句的顶部,它可以工作,不知道为什么。 :) 还是谢谢!
    • @Isaac > “来自 Safari 使用的同一 cookie 存储区”:请注意,沙盒化的 Mac App Store 应用将不再获取这些 cookie。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    相关资源
    最近更新 更多