4
我明白,從iOS9開始,您應該可以使用SFSafariViewController讀取cookie。SFSafariViewController cookies
如果我使用下面的設置我的網頁上的Cookie,JS:
var dd = new Date(Date.now() + 1000 * 60 * 60 * 24).toGMTString();
var expires = "expires="+ dd;
document.cookie = "mycookie=cookievalue; " + expires + " domain=.mydomain.co.uk ; path=/ ";
如果我做的:
- (void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully
{
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookiesArray = [storage cookies];
}
cookiesArray總是空的。
如果我使用的是傳統的UIWebView
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookiesArray = [storage cookies];
}
我得到我所期待的餅乾。
任何想法,我可能做錯了什麼?
感謝您回覆我,但根據:https://developer.apple.com/reference/safariservices/sfsafariviewcontroller 該視圖控制器包括Safari功能,如閱讀器,自動填充,欺詐網站檢測和內容阻塞。它與Safari共享cookies和其他網站數據。用戶的活動和與SFSafariViewController的交互對您的應用程序不可見,該應用程序無法訪問自動填充數據,瀏覽歷史記錄或網站數據。您不需要在應用程序和Safari之間保護數據。 –
您誤解了SFSafariViewController「與Safari共享Cookie和其他網站數據」意味着什麼。 SFSafariViewController是Safari的一個實例。它不是你的應用程序的一部分。它正在訪問數據的Safari沙盒(cookie,自動填充等),它不是您的應用程序與Safari共享該數據。您的應用無法訪問Safari中的任何安全數據,包括Cookie。如果您需要在您的應用中訪問網站cookie,SFSafariViewController不是正確的選擇。 – wottle
您在代碼中證明了我的答案。如果您在SFSafariViewController中訪問網站,NSHTTPCookieStorage將爲空。 SFSafariViewController有它的用處,但不是你想要做的。 – wottle