2012-03-20 25 views

Trả lời

8

Để chắc chắn bắt đầu với

[NSHTTPCookieStorage sharedHTTPCookieStorage].cookieAcceptPolicy = 
    NSHTTPCookieAcceptPolicyAlways; 

Nhưng, như đã đề cập bởi @JoelFan, vấn đề này có thể Agent chuỗi tài khoản của bạn gây ASP.NET để cố gắng và thất bại tại một đăng nhập cookie. Thay vì một phản ứng bao gồm

Set-Cookie: .ASPXAUTH = thực sự kéo dài-hex-số

nó trả về một chuyển hướng đến một cái gì đó giống như

Location:/(F (long-sorta-base64ish-tìm-chuỗi))/

Chuỗi tác nhân người dùng UIWebView mặc định là một cái gì đó như

Tác nhân người dùng: Mozilla/5.0 (iPad; CPU OS 7_0_2 như Mac OS X) AppleWebKit/537.51.1 (KHTML, như Gecko) Mobile/11A501

nhưng ASP.NET không thích điều này. Safari sẽ gửi một cái gì đó như thế này:

User-Agent: Mozilla/5.0 (iPad; CPU OS 7_0_2 như Mac OS X) AppleWebKit/537.51.1 (KHTML, như Gecko) Version/7.0 thoại di động/11A501 Safari/9537,53

làm như sau từ rất sớm, có lẽ trong AppDelegate.m bạn

// DON'T try to reuse a UIWebView for this. 
UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectZero]; 
// This webview has already decided to use the default user agent string. 

// let's use javascript to get the existing user agent string 
NSString *userAgent = [wv stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; 

// let's tack on some stuff to make ASP.NET happy 
userAgent = [userAgent stringByAppendingString:@" Version/7.0 Safari/9537.53"]; 

[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent": userAgent}]; 
// New UIWebViews inited after here will use the user agent string you made. 
Các vấn đề liên quan