我有一个UIWebView
加载网站,用户身份验证。该网站创建一个身份验证cookie。在浏览器中,除非您清除Cookie,否则您将始终登录。当xCODE加载时,它可以在查看cookie jar时看到列出的cookie,但它不会发送到webView。 我想知道如何让webView知道auth cookie在那里,所以它不会每次都提示用户进行身份验证。iOS的UIwebView身份验证Cookie
5
A
回答
7
您可以使用NSURLConnection类来执行HTTP请求以登录网站并检索cookie。要执行请求,只需创建一个NSURLConnection实例并为其分配一个委托对象。
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
然后,实现委托方法。
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
NSDictionary *fields = [HTTPResponse allHeaderFields];
NSString *cookie = [fields valueForKey:"Set-Cookie"]; // It is your cookie
}
保留或复制cookie字符串。当你想执行另一个请求时,将它添加到你的NSURLRequest实例的HTTP头部。
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
[request addValue:cookie forHTTPHeaderField:"Cookie"];
删除Cookie您可以随时调用这个方法:
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) {
[cookieStorage deleteCookie:each];
}
2
我解决了这个问题。这个问题与配置有关,因为UIWebView没有被视为标准的Web浏览器。我通过.net和IIS验证用户身份。我在我的网站的App_Browser目录中添加了一个generic.browser文件。该文件的内容是:
<browsers>
<browser refID="Mozilla" >
<capabilities>
<capability name="cookies" value="true" />
</capabilities>
</browser>
<browser refID="Default">
<capabilities>
<capability name="cookies" value="true" />
</capabilities>
</browser>
</browsers>
纠正的问题是能力使饼干就行了。
给我使用的解决方案的参考是这样的
4
您可以使用共享存储的cookie读取所有网站的身份验证cookie。
NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies])
{
NSLog(@"%@", cookie);
}
或获得的.NET aspxauth饼干为您的网站
NSArray *cookiesForURL = [cookieJar cookiesForURL: [NSURL URLWithString: **MYURL**]];
for (cookie in cookiesForURL)
{
if([cookie.name compare:@".ASPXAUTH"] == NSOrderedSame)
{
NSLog(@"%@", cookie);
break;
}
}
相关问题
- 1. 身份验证Cookie
- 2. 身份是身份验证Cookie
- 3. Asp .NET身份Cookie身份验证
- 4. Cookie和身份验证-ASP.net
- 5. DownloadManager与Cookie身份验证
- 6. 重置身份验证Cookie
- 7. 身份验证Cookie到期
- 8. ASP.NET MVC身份验证Cookie
- 9. HybridAuth身份验证Cookie
- 10. Angular 2 cookie身份验证
- 11. OWIN Cookie身份验证
- 12. ASP.NET身份验证Cookie
- 13. 两个身份验证cookie
- 14. GWT RPC Cookie身份验证
- 15. 表单身份验证和身份验证票据Cookie域
- 16. Ajax:HTTP基本身份验证和身份验证Cookie
- 17. 使用Owin OpenId身份验证混合Owin Asp.Net身份Cookie身份验证
- 18. 使用CORS和Cookie身份验证的ASP.NET身份/ OData缺少身份验证Cookie
- 19. Windows Azure iOS身份验证
- 20. AWS IOS SDK身份验证
- 21. Watson iOS SDK身份验证
- 22. iOS RestKit身份验证
- 23. C#Forms身份验证.ASPXAUTH Cookie的SSO
- 24. ASP.NET中的无Cookie身份验证
- 25. Cookie或RESTful密钥的身份验证?
- 26. Cookie中的In-python MediaWiki身份验证
- 27. 身份验证在asp.net中的Cookie
- 28. 基于不依赖表单身份验证的基于Cookie的身份验证
- 29. 使用Cookie身份验证的项目中的基本身份验证
- 30. UIWebView身份验证不再适用于iOS 7.1
好,我是新来的Xcode和我对此有疑问。如果他们太简单,随时给我打电话。在AppDelegate.m文件中,我尝试声明NSURL和NSURLConnection,并得到一个关于那些不是常量的编译器错误。我也在AppDelagate.m中实现了委托并编译。 NSMutable我不知道应该采用什么方法。我确信这是简单的问题,但我真的不知道。 – Hector