IOS與H5交互,cookie傳值

在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值了!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容