我有一個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