Включить Cookies в UIWebView - PullRequest
       16

Включить Cookies в UIWebView

6 голосов
/ 21 марта 2012

Как включить файлы cookie в приложении iPhone, которое использует окно UIWebView, чтобы моя система входа работала?

Ответы [ 2 ]

9 голосов
/ 19 октября 2013

Обязательно начните с

[NSHTTPCookieStorage sharedHTTPCookieStorage].cookieAcceptPolicy = 
    NSHTTPCookieAcceptPolicyAlways;

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

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

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

Местоположение: / (F ( long-sorta-base64-выглядящая строка )) /

Строка агента пользователя 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) Версия / 7.0 Мобильный / 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.
1 голос
/ 10 декабря 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...