在UIWebView中启用Cookie

e__*_*e__ 6 iphone cookies uiwebview ios ios5

如何在使用UIWebView窗口的iPhone应用程序中启用cookie,以便我的登录系统能够正常工作?

Haf*_*hor 9

一定要先开始

[NSHTTPCookieStorage sharedHTTPCookieStorage].cookieAcceptPolicy = 
    NSHTTPCookieAcceptPolicyAlways;
Run Code Online (Sandbox Code Playgroud)

但是,正如@JoelFan所提到的,问题可能是您的用户代理字符串导致ASP.NET在无cookie登录时尝试失败.而不是包含的响应

Set-Cookie:.ASPXAUTH = 真正的长十六进制数

它返回重定向到类似的东西

位置:/(F(long-sorta-base64ish-looking-string))/

默认的UIWebView用户代理字符串就像

用户代理:Mozilla/5.0(iPad; CPU OS 7_0_2,如Mac OS X)AppleWebKit/537.51.1(KHTML,如Gecko)Mobile/11A501

但ASP.NET不喜欢这个.Safari发送的内容如下:

用户代理: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.
Run Code Online (Sandbox Code Playgroud)


Joe*_*Fan 1

如果您登录的站点是 ASP.NET 站点,则问题可能是由于 UIWebView 发送无法识别的用户代理所致。请参阅在 UIWebView 中更改用户代理 (iPhone SDK)