Tag: nshttpcookie

使用UIWebView共享WKWebView Cookie

我试图与UIWebView分享WKWebViewcookies获取所有的Cookie。 我知道从UIWebView获取所有的cookie比较简单,比较WKWebView。 我在选项卡式应用程序模板中创build了两个WebView(WKWebView,UIWebView)。 下面的方法,我用于与UIWebView共享WKWebViewcookies,但没有得到成功。 func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { let response = navigationResponse.response as? HTTPURLResponse let cookies = HTTPCookie.cookies(withResponseHeaderFields: response?.allHeaderFields as! [String : String], for: (response?.url)!) HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always for cookie in cookies { HTTPCookieStorage.shared.setCookie(cookie) } decisionHandler(WKNavigationResponsePolicy.allow); } 使用上面的代码,当我login到我的帐户从WKWebView,UiWe​​bView没有login我已经。 我也试图与WKWebView共享UIWebViewcookies,它的工作。 请谁能告诉我如何可以与UIWebView共享WKWebView Cookie或如何从WKWebView中获取所有的cookie? 谢谢

如何获取cookie并将其用于POST(iOS)等其他请求?

我之前的问题是关于每次loginWeb服务(如发布链接或上传图片)时都必须login的问题。 菲利普回答说,我必须使用Cookie而不是每个请求的login过程。 我发现这种获取cookie的方法: – (void)getCookies { NSHTTPURLResponse * response; NSError * error; NSMutableURLRequest *request; request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://MyWebsite.com/login.php"] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:120]; NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]); NSArray * all = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@"http://MyWebsite.com/login.php"]]; NSLog(@"%d", all.count); for (NSHTTPCookie *cookie in all) { NSLog(@"Name: %@ : […]

创build一个非跟踪的应用内网页浏览器

我正在尝试创build一个webview(作为练习),它不会在本地跟踪或存储任何浏览历史logging。 我已经做到了,当webview被closures时,它会调用以下内容 [[NSURLSession sharedSession]resetWithCompletionHandler:^{}]; 但我发现像谷歌search历史的东西坚持一些如何之间的会议。 我也尝试通过分开清除cookie NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (NSHTTPCookie *cookie in [storage cookies]) { [storage deleteCookie:cookie]; } [[NSUserDefaults standardUserDefaults] synchronize]; 依然无济于事。 Googlesearch仍会在创build新网页视图时显示。 有谁知道一种方法来删除标识符,谷歌正在使用匹配的search历史回到我? 我担心它就像包标识符,这可能是有点棘手,以防止被阅读。 任何想法都表示赞赏。 问候, 卢克

WKWebView并没有在navigationResponse中提供所有的cookie

我正在尝试用WkWebViewreplace我工作的UIWebView项目。 我见过很多post,但是我没有得到任何从WKWebView获取所有cookie的好方法。 我也试过了这个evaluateJavaScript:@"document.cookie;" 但它给了我() 。 我也检查了这个post ,也试过这个解决scheme,据我所知,但它也没有奏效。 guard let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies else { return }上面的方法只适用于UIWebView,因为WKWebView不会立即回写cookies。 任何人都可以告诉我怎样才能从WKWebView的所有cookie。 谢谢 这种方法的工作,但没有给我所有的cookies。 func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { if navigationResponse.response.url?.absoluteString.range(of: "") != nil || navigationResponse.response.url?.absoluteString.range(of: "") != nil{ let response = navigationResponse.response as? HTTPURLResponse let cookies = HTTPCookie.cookies(withResponseHeaderFields: response?.allHeaderFields as! [String […]

为两个单独的cookie存储(UIWebView或WKWebView)

我想在不同的webViewlogin同一网站的许多帐户。 例如,我有Tab Bar Controller包含三个视图控制器和每个视图控制器包含webView 。 例如,我在每个类中embedded了webView stackoverflow url。 用户如何使用这三个webView同时login到不同的账户? 我试过这个,但我可以一次login一个用户。 我发现我需要为每个UIWebView创build单独的cookie ,但主要答案是在objective-c中,而不是我想要的正确答案。 例如( 第一个 第二个 第三 )任何人都可以告诉我,我怎么能做到这一点? class FirstViewController: UIViewController , UIWebViewDelegate{ @IBOutlet weak var webView: UIWebView! @IBOutlet weak var activityIndicator: UIActivityIndicatorView! override func viewDidLoad() { webView.delegate = self let requestURL = NSURL(string: "http://stackoverflow.com") let request = NSURLRequest(URL: requestURL!) activityIndicator.hidesWhenStopped = true activityIndicator.startAnimating() webView.loadRequest(request) } […]

AFNetworking自动保存Cookie

在这个问题 ,据说AFNetworking在后台自动照顾的cookies,但在上一个问题,我问,我在保持会议在服务器上的php在login时制成的。一旦我closures(停止在Xcodedebugging)的应用程序,并在会议回去了。 答案是坚持cookies像这样来解决这个问题: NSData *cookiesData = [[NSUserDefaults standardUserDefaults] objectForKey:@"User"]; if ([cookiesData length] > 0) { for (NSHTTPCookie *cookie in [NSKeyedUnarchiver cookiesData]) { [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; } } 当我尝试做这样的事情时,这给我一个应用程序崩溃。 当我login时,我设置NSUserDefault如下所示: [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"User"]; //Then synthesize 这是错误的方式来使用这个? NSHTTPCookieStorage甚至是我的问题? 谢谢。