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

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

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

(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]; } 

这会更改用户代理。 还有一些令人惊讶的其他方法可以做到这一点,其中一些非常复杂(其中一种被称为“混合”),其中大多数都不起作用。

在这种情况下,UIWebView需要实现正确的委托协议方法,以允许您与后端体系结构进行通信。 请看看这个 , 这个和这个 。