2012-03-20 3 views

ответ

1

Если сайт, на который вы входите, является сайтом ASP.NET, проблема может быть связана с тем, что UIWebView отправляет нераспознанный User Agent. См Change User Agent in UIWebView (iPhone SDK)

8

Наверняка начать с

[NSHTTPCookieStorage sharedHTTPCookieStorage].cookieAcceptPolicy = 
    NSHTTPCookieAcceptPolicyAlways; 

Но, как уже упоминалось @JoelFan, проблема может быть вашим агентом строка Пользователь вызывает ASP.NET, чтобы попытаться и потерпеть неудачу в Cookieless входа. Вместо ответа, который включает в себя

Set-Cookie: .ASPXAUTH = действительно-давно шестигранный номер

возвращает перенаправление на что-то вроде

Адреса:/(F (long-sorta-base64ish-look-string))/

Строка пользовательского агента UIWebView по умолчанию -

User-Agent: Mozilla/5.0 (iPad; CPU OS 7_0_2, как Mac OS X) AppleWebKit/537.51.1 (KHTML, как Gecko) Mobile/11A501

но ASP.NET не нравится. Safari посылает что-то вроде этого:

User-Agent: Mozilla/5.0 (IPAD, CPU OS 7_0_2, как Mac OS X) AppleWebKit/537.51.1 (KHTML, как Gecko) Version/7.0 Mobile/11A501 Safari/9537,53

Выполните следующие действия на ранней стадии, может быть, в вашем AppDelegate.m

// 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. 
Смежные вопросы