iOS Swift Webview上Cookie的保存、设置自定义Cookie值

近期做了一个需要与Webview交互的项目,需要实现网页上的自动登录功能,参考了一些OC的代码,改为Swift

首先是保存网页Cookie的方法,建议在WebView的代理方法webViewDidFinishLoad(webView: UIWebView)中调用

保存Cookie

func saveCookies() {

获取到当前的所有Cookie值

let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies

将所有Cookie转为NSData格式

let data: NSData = NSKeyedArchiver.archivedDataWithRootObject(cookies!)

将转换格式的Cookie保存

NSUserDefaults.standardUserDefaults().setObject(data, forKey: "cookie")

}

其次是往网页中添加自定义Cookie值的方法,可以与前端人员协商,判断你是否是用ios浏览登录等信息,作为特殊的标识来辨别,建议在加载Webview之前写入内存的Cookie中

添加自定义Cookie

func setCookieToWeb(cookiename:String,cookievalue:String,cookieDomain:String){

创建一个参数字典

var cookieProperties = [String: AnyObject]()

设置Cookie的名称

cookieProperties[NSHTTPCookieName] = cookiename    

设置Cookie名称对应的值

cookieProperties[NSHTTPCookieValue] = cookievalue

设置Cookie的有效域名

cookieProperties[NSHTTPCookieDomain] = cookieDomain     

设置Cookie的路径

cookieProperties[NSHTTPCookiePath] = "/"        // 路径

将字典转为Cookie

let cookies = NSHTTPCookie(properties: cookieProperties)

将Cookie的值设置到当前内存中

NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookies! )

}

最后是将存储的cookie取出,再设置到内存中

获取保存的cookie并设置网页cookie

func retrieveCookies() {
判断存储的cookie

if (NSUserDefaults.standardUserDefaults().objectForKey("cookie") != nil) {

获取cookie

let cookiesdata = NSUserDefaults.standardUserDefaults().objectForKey("cookie") as! NSData

if cookiesdata.length > 0 {

将cookie转为数组

let cookies: NSArray = NSKeyedUnarchiver.unarchiveObjectWithData(cookiesdata) as! NSArray

//循环将Cookie数组内的cookie添加到内存中

for cookie  in cookies {

NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie as! NSHTTPCookie)

}

}

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS App开发中的Cookie 一、何为Cookie Cookie是网站为了便是终端身份,保存在终端本地的用户...
    o本是后山人o偶作前堂客o阅读 3,750评论 1 8
  • cookie机制采用的是在客户端保持 HTTP 状态信息的方案 Cookie是在浏览器访问WEB服务器的某个资源时...
    葛高召阅读 3,032评论 0 0
  • 在APP开发中,cookie也开始变的越来越重要了。为了更好的切换,注销和登录账户,就必须熟悉cookie的用法。...
    hzy1314阅读 545评论 0 0
  • 在APP开发中,cookie也开始变的越来越重要了。为了更好的切换,注销和登录账户,就必须熟悉cookie的用法。...
    IceWall_Rin阅读 501评论 0 2
  • 前言 关于UIWebView的介绍,相信看过上文的小伙伴们,已经大概清楚了吧,如果有问题,欢迎提问。 本文是本系列...
    CoderLF阅读 9,016评论 2 12