在iPhone系統升級前:10.1之前的時候我們在與H5交互直接通過傳遞cookie就可以實現H5的部分參數需求。
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];
然后,從系統升級后,10.2起,cookie傳值已經無法正常傳遞過去。即H5無法收到ios平臺發送過去的cookie參數。
究其原因:IOS 10.2以后不再支持http請求協議,稱為支持的https協議,所以http的協議無法通過cookie傳遞到H5頁面。
解決方法:
新增一個字段: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];
這時候再次運行,那么H5已經可以接收到我們的cookie值了!