最近的項(xiàng)目開發(fā)中,遇到了一個(gè)有趣的問(wèn)題:金融項(xiàng)目需要接入第三方的SDK進(jìn)行資金托管,比如充值,提現(xiàn),投資等。當(dāng)從第三方的界面回到原生APP界面時(shí),神奇的事情發(fā)生了。原本存儲(chǔ)在NSHTTPCookieStorage中的cookic卻被清空了。項(xiàng)目是依靠cookie驗(yàn)證用戶登錄狀態(tài),這下出大事了:用戶莫名其妙的退出登錄了。
一,NSHTTPCookieStorage
/*!
@property sharedHTTPCookieStorage
@abstract獲取默認(rèn)位置的共享cookie存儲(chǔ)。
@result共享的cookie存儲(chǔ)
@discussion從OS X 10.11開始,每個(gè)應(yīng)用程序都有自己的sharedHTTPCookieStorage單例,
這將不會(huì)與其他應(yīng)用程序共享。
*/
@property(class, readonly, strong) NSHTTPCookieStorage *sharedHTTPCookieStorage;
當(dāng)我們使用該類的時(shí)候,是通過(guò)上面這個(gè)屬性方法獲取到該單例對(duì)象的。至于為什么會(huì)采用單例模式,是因?yàn)樵擃惖挠猛揪褪恰肮蚕淼腸ookie存儲(chǔ)”。
/*!
@abstract獲取所有的cookies
@result一個(gè)NSArray的NSHTTPCookies
*/
@property (nullable , readonly, copy) NSArray<NSHTTPCookie *> *cookies;
/*!
@method setCookie:
@abstract設(shè)置一個(gè)cookie
@discussion該cookie將覆蓋現(xiàn)有的cookie與相同的名稱,域名和路徑,如果有的話。
*/
- (void)setCookie:(NSHTTPCookie *)cookie;
/*!
@method deleteCookie:
@abstract刪除指定的cookie
*/
- (void)deleteCookie:(NSHTTPCookie *)cookie;
/*!
@method removeCookiesSince:
@abstract從提供的日期起,刪除cookie存儲(chǔ)中的所有cookie。
*/
- (void)removeCookiesSinceDate:(NSDate *)date
/*!
@method cookiesForURL:
@abstract返回要發(fā)送到給定URL的cookie數(shù)組。
@param URL獲取cookie的URL。
@result一個(gè)NSArray的NSHTTPCookie對(duì)象。
@discussion Cookie管理器檢查它存儲(chǔ)的cookie包括那些應(yīng)該被發(fā)送到給定的URL。 您可以使用<tt> + [NSCookie requestHeaderFieldsWithCookies:] </ tt>來(lái)打開這個(gè)數(shù)組成一組頭字段添加到請(qǐng)求。
*/
- (nullable NSArray<NSHTTPCookie *> *)cookiesForURL:(NSURL *)URL;
/*!
@method setCookies:forURL:mainDocumentURL:
@abstract將一個(gè)數(shù)組的cookie添加到cookie存儲(chǔ)中
Cookie接受政策。
@param cookies要設(shè)置的cookie。
@參數(shù)URL發(fā)送cookie的URL。
@param mainDocumentURL要用作“相同”的基礎(chǔ)的主文檔URL域名為主要文件“政策。
@discussion對(duì)于mainDocumentURL,調(diào)用者應(yīng)該傳遞URL一個(gè)適當(dāng)?shù)闹魑臋n,如果知道的話。
例如,加載時(shí)一個(gè)網(wǎng)頁(yè),頂層的主html文檔的URL框架應(yīng)該通過(guò)。
根據(jù)一組響應(yīng)保存cookie頭,你可以使用<tt> + [NSCookie
cookiesWithResponseHeaderFields:forURL:] </ tt>標(biāo)題字段字典,然后使用此方法來(lái)存儲(chǔ)結(jié)果的cookie 按照政策設(shè)置。
*/
- (void)setCookies:(NSArray<NSHTTPCookie *> *)cookies forURL:(nullable NSURL *)URL mainDocumentURL:(nullable NSURL *)mainDocumentURL;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。