【问题标题】:How to get 2 different webviews with 2 different NSURLSession (iOS Swift)如何使用 2 个不同的 NSURLSession (iOS Swift) 获得 2 个不同的 webviews
【发布时间】:2016-05-25 11:56:10
【问题描述】:

我想创建一个带有 2 个 Web 视图(1 个商店,1 个登录商店)的 iOS 应用

如果我登录一个 webview,另一个 webview 包含相同的 cookie,并且第一个 webview 也已登录。

我需要第一个拥有自己的会话(cookie)!

我的计划是让保存的登录 Touch-ID 受到保护,并且每个人都可以免费使用 webview。

我目前正在搜索 2 个半小时并尝试了以下内容:

let request = NSMutableURLRequest(URL: NSURL(string: "https://www.my-url.com")!)
    request.setValue("", forHTTPHeaderField: "Cookie")
    webView.loadRequest(request)

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    是的,您可以将 cookie 保存到来自webViewDidFinishLoad 的第一个 webview:

    let storage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
    for cookie in storage.cookies as! [NSHTTPCookie]{
        print(cookie)
    }
    NSUserDefaults.standardUserDefaults().synchronize()
    

    如果您将第二个 webview 设置为 loadRequest:

    var req = NSURLRequest(URL: NSURL(string: urlString)!)
    var storage = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies as! [NSHTTPCookie]
    
    var reqCookies:[AnyObject] = []
    
    for aCookie in storage {
    
        reqCookies += [aCookie]
    
    }
    
    var headers = NSHTTPCookie.requestHeaderFieldsWithCookies(reqCookies)
    
    self.webView.loadRequest(req)
    

    否则你可以删除:

    let storage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
    for cookie in storage.cookies! {
       storage.deleteCookie(cookie)
    }
    NSUserDefaults.standardUserDefaults().synchronize()
    

    编辑(在 cmets 之后):要管理不同的会话,您可以查看 Stackoverflow 对 handle your different sessions 的回答。

    【讨论】:

    • 嗨亚历山德罗,感谢您的快速回答,但我有相反的问题。我有 2 个 Web 视图,默认行为是视图具有 sharedStorage。我的计划是进行完全不同的会话,例如必须浏览器。问题是:我可以设置 cookie,但是更改 webview 的页面将再次检索另一个会话。
    • 这部分在您的问题中并不清楚。如果您想处理不同的会话,您必须将默认的 cookie 策略更改为 NSHTTPCookieAcceptPolicyNever,然后使用 allHeaderFields 和 cookiesWithResponseHeaderFields:forURL: 方法从中提取 cookie自己的 URL 响应对象。
    猜你喜欢
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多