登录在Safari中工作但不在UIWebView中工作

Joe*_*Fan 1 iphone ios

我有一个简单的iOS应用程序,它只显示一个UIWebView需要登录的特定网站.如果我运行我的应用程序并尝试登录该站点只需重新显示登录页面(没有错误消息).如果我使用Safari,我可以登录同一个网站.我的错在哪里UIWebView?如果重要,该网站使用SSL/https.

Joe*_*Fan 7

原来问题是这样的:使用iPhone UIWebView时的Asp.Net Forms身份验证

(UIWebView发送一个奇怪的用户代理标头,ASP.NET无法识别,所以它认为它无法处理cookie.这显然已经在ASP.NET 4.5中得到修复,甚至在早期版本中你可以在服务器上修复它你有权访问ASP.NET站点)

答案就在这里:在UIWebView中更改用户代理(iPhone SDK)

链接到:http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview

关键部分是将此代码放入您的应用启动代码中:

- (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSDictionary *dictionary = [NSDictionary 
        dictionaryWithObjectsAndKeys:
        @"Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", 
        @"UserAgent", nil];
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
}
Run Code Online (Sandbox Code Playgroud)

这会更改用户代理.有很多其他方法可以做到这一点,其中一些非常复杂(其中一种被称为"混合"),其中大多数都不起作用.