在iPhone系統(tǒng)升級前:10.1之前的時(shí)候我們在與H5交互直接通過傳遞cookie就可以實(shí)現(xiàn)H5的部分參數(shù)需求。
NSURL *cookieHost = [NSURL URLWithString:urlString];
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *app_Version = [NSString stringWithFormat:@"%@",[infoDictionary objectForKey:@"CFBundleShortVersionString"]];
NSHTTPCookie *cookieClient = [NSHTTPCookie cookieWithProperties:[NSDictionary dictionaryWithObjectsAndKeys:[cookieHost host], NSHTTPCookieDomain,[cookieHost path], NSHTTPCookiePath,@"Client",? NSHTTPCookieName, @"ios", NSHTTPCookieValue,nil]];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookieClient];
然后,從系統(tǒng)升級后训枢,10.2起,cookie傳值已經(jīng)無法正常傳遞過去忘巧。即H5無法收到ios平臺發(fā)送過去的cookie參數(shù)恒界。
究其原因:IOS 10.2以后不再支持http請求協(xié)議,稱為支持的https協(xié)議砚嘴,所以http的協(xié)議無法通過cookie傳遞到H5頁面十酣。
解決方法:
新增一個(gè)字段:key:httpOnly? value:false。
NSHTTPCookie *cookieClient2 = [NSHTTPCookie cookieWithProperties:[NSDictionary dictionaryWithObjectsAndKeys:[cookieHost host], NSHTTPCookieDomain,[cookieHost path], NSHTTPCookiePath,@"httpOnly",? NSHTTPCookieName, @"false", NSHTTPCookieValue,nil]];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookieClient];
這時(shí)候再次運(yùn)行际长,那么H5已經(jīng)可以接收到我們的cookie值了耸采!