UI WebView의 모든 쿠키를 삭제하는 방법은 무엇입니까?
내 지원서에, 나는.UIWebview
로그인을 위해 인증 페이지에 링크를 로드합니다.사용자가 로그인하면 쿠키가 응용프로그램에 저장됩니다.
내 앱에는 linked in login과 관련이 없는 logout 버튼이 있습니다.그래서 사용자가 이 버튼을 클릭하면 앱에서 로그오프합니다.이 로그오프를 통해 앱에서 링크된 쿠키도 지워져 사용자가 완전히 로그아웃하기를 원합니다.
이 질문에 따르면 "쿠키 병"의 각 쿠키를 검토한 후 다음과 같이 삭제할 수 있습니다.
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [storage cookies]) {
[storage deleteCookie:cookie];
}
[[NSUserDefaults standardUserDefaults] synchronize];
이와 관련된 정보를 추가하고 싶습니다.
OS X 10.9/iOS 7 이상에서는 -reset을 사용할 수 있습니다.CompletionHandler 사용: 전체 앱의 쿠키 및 캐시 등을 삭제합니다.sharedSession
:
모든 쿠키, 캐시 및 자격 증명 저장소를 비우고, 디스크 파일을 제거하고, 디스크로 진행 중인 다운로드를 플러시하며, 향후 요청이 새 소켓에서 발생하도록 합니다.
[[NSURLSession sharedSession] resetWithCompletionHandler:^{
// Do something once it's done.
}];
다음과 같은 For-In 루프deleteCookie:
컬렉션을 열거하는 동안 수정하는 것처럼 들립니다. (몰라요, 나쁜 생각일 수도 있어요?)
웹뷰의 html 안에 쿠키를 정리하는 기능을 만들 수 있습니다.
Titanium 이벤트로 이 기능을 트리거할 수 있는 한 번만 클리닝을 수행해야 하는 경우 앱이 시작될 때만 해당됩니다.
MK WebView를 사용하는 경우 이전 답변이 도움이 되지 않았습니다.그래서 저는 다른 해결책을 찾았습니다.
func loadAuthUrl(_ url: URL) {
let finally: VoidClosure = { [weak self] in
guard let self = self else { return }
let request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 60.0)
self.webView.load(request)
}
let cookieStore = webView.configuration.websiteDataStore.httpCookieStore
cookieStore.getAllCookies({ [weak self] cookies in
guard let _ = self else { return }
let instagramCookies = cookies.filter({ $0.domain == ".instagram.com" })
if instagramCookies.isEmpty {
finally()
} else {
DispatchQueue.global().async(execute: {
let group = DispatchGroup()
for cookie in cookies {
group.enter()
cookieStore.delete(cookie, completionHandler: { group.leave() })
}
group.wait()
DispatchQueue.main.async(execute: finally)
})
}
})
}
Swift 솔루션을 찾는 사람이 있다면 다음과 같이 하십시오.
let storage = HTTPCookieStorage.shared
if let cookies = storage.cookies{
for cookie in cookies {
storage.deleteCookie(cookie)
}
}
언급URL : https://stackoverflow.com/questions/4471629/how-to-delete-all-cookies-of-uiwebview
'programing' 카테고리의 다른 글
PHP에서 IP 주소가 두 개의 IP 범위 내에 있는지 확인하는 방법은 무엇입니까? (0) | 2023.07.31 |
---|---|
Android:ViewPager WRAP_CONTENT를 사용할 수 없습니다. (0) | 2023.07.31 |
ORA-01403: Select to에 대한 데이터를 찾을 수 없습니다. (0) | 2023.07.31 |
SQL 테이블 이름에 숫자를 포함하는 것이 좋습니까, 나쁘습니까? (0) | 2023.07.31 |
Android SSL 연결에 대한 트러스트 앵커를 찾을 수 없습니다. (0) | 2023.07.31 |