Cookie là các file nhỏ được lưu trên thiết bị khi duyệt web.
Trên iPhone, cookie thường liên quan đến:
- Trình duyệt Safari
- Ứng dụng sử dụng Web View (WKWebView, UIWebView - deprecated)
Một ứng dụng iOS thông thường không chứa cookie. Chỉ có cookie khi app có Web View.
Xem cookie Safari
Trên iPhone: Cài đặt → Safari → Nâng cao → Dữ liệu trang web. Tại đây liệt kê tất cả cookie/dữ liệu trang web.
Cookie trong iOS App (WKWebView)
WKWebView tự động lưu cookie vào HTTPCookieStorage.shared (shared cookie storage).
Truy xuất cookie trong code
// Lấy tất cả cookie
let cookies = HTTPCookieStorage.shared.cookies ?? []
for cookie in cookies {
print("Name: \(cookie.name), Value: \(cookie.value), Domain: \(cookie.domain)")
}
// Lấy cookie cho URL cụ thể
if let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: "https://example.com")!) {
for cookie in cookies {
print("\(cookie.name)=\(cookie.value)")
}
}
// Xóa cookie cho domain
if let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: "https://example.com")!) {
for cookie in cookies {
HTTPCookieStorage.shared.deleteCookie(cookie)
}
}
// Xóa tất cả cookie
HTTPCookieStorage.shared.cookies?.forEach { HTTPCookieStorage.shared.deleteCookie($0) }
Cấu hình Cookie Policy (WKWebView)
let configuration = WKWebViewConfiguration()
configuration.websiteDataStore = WKWebsiteDataStore.default() // Persistent
// Hoặc non-persistent (private browsing)
configuration.websiteDataStore = WKWebsiteDataStore.nonPersistent()
let webView = WKWebView(frame: .zero, configuration: configuration)
Đồng bộ cookie giữa native request và WebView
// Share cookie từ URLSession sang WKWebView
let cookies = HTTPCookieStorage.shared.cookies(for: url) ?? []
for cookie in cookies {
webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie)
}
Lưu ý
UIWebViewđã deprecated từ iOS 12, bị xóa iOS 17+. Bắt buộc dùngWKWebView- Cookie được chia sẻ giữa Safari và App nếu cùng domain (qua Shared Web Credentials)
- App Sandbox: Mỗi app có cookie storage riêng, trừ khi dùng App Groups
- GDPR/Privacy: Cần consent user trước khi track cookie