1

문제 요약 : MKNetworkKit을 사용하고 있으며 Basic Auth를 사용하여 REST 서버에 대해 자신을 인증합니다. 저는 서버 측의 세부 설정에 대한 전문가입니다. SSL을 사용하지 않고 기본 인증을 받겠습니다.MKNetworkKit : 인증 관련 캐싱을 지우는 방법

유효한 사용자/비밀번호로 인증을 받고 2 번째로 가짜 입력을하면 그 인증은 계속 성공합니다. 설명서를 읽고 다음을 시도했습니다.

[op setCredentialPersistence:NSURLCredentialPersistenceNone]; 

작동하지 않습니다. 하지만 내가 이렇게하면 :

[op setCredentialPersistence:NSURLCredentialPersistenceNone]; 
[op addHeader:@"Cookie" withValue:@""]; // a hunch I tried 

그런 것 같았습니다. 이는 마치 일부 쿠키가 항상 전달되고 있으며 서버가 인증 헤더를 확인하지 않고도이를 수용하는 것과 같습니다. 나는이 순서 (좋은, 가짜, 좋은)와 (가짜, 좋은, 가짜) 순서대로 물건을 제공 할 몇 가지 테스트를 수행했으며 예상대로 작동하는 것으로 보였다.

이제 누군가가 어떻게 작동해야하는지, 어딘가에 버그가 있어야합니다 (MKNetworkKit 또는 서버 쪽)? NSURLCredentialPersistenceNone을 설정하면 쿠키 헤더를 추가하면 왜 효과가 있습니까? 그것은 그것이 보낸 행동을 덮어 썼을 것이고 틀린 행동을 일으켰을 것이고, 따라서 그것을 "고정"할 것입니다.

+0

아마도 서버는 인증 후에 세션 쿠키를 추가합니다. 요청 전과 응답을 받으면'[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]'를 로그에 기록하십시오. – Moxy

답변

0

HTTP 프로토콜의 상태 비 저장 특성으로 인해 클라이언트는 종종 쿠키를 사용하여 URL 요청간에 영구적 인 데이터 저장소를 제공합니다. URL 로딩 시스템은 쿠키를 만들고 관리하고, HTTP 요청의 일부로 쿠키를 보내고, 웹 서버의 응답을 해석 할 때 쿠키를 수신하는 인터페이스를 제공합니다. OS X 및 iOS는 NSHTTPCookieStorage 클래스를 제공하며, NSHTTPCookieStorage 클래스는 NSHTTPCookie 객체 컬렉션을 관리하기위한 인터페이스를 제공합니다. OS X에서는 쿠키 저장소가 모든 앱에서 공유됩니다. iOS에서 쿠키 저장소는 앱마다 있습니다 (체크 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html#//apple_ref/doc/uid/10000165-BCICJDHA) Moxy가 말한대로 [[NSHTTPCookieStorage sharedHTTPCookieStorage] 쿠키]에 로그를 남기십시오. 동일한 문제가 발생하여 서버에서 쿠키를 사용하고 유지 관리했습니다. 리디렉션은 (있는 NSURLConnection) inConnection willSendRequest : (NSURLRequest *) inRequest redirectResponse (NSURLResponse *) inRedirectResponse 일어나고 제가

  • 의 요청 및 응답을 확인 증명 (NSURLRequest) 연결을 통해 로그인 할 때마다

쿠키가 헤더에 보관되었습니다. 새 세션에 임의의 쿠키를 보내는 것만 가능합니다.