2011-02-26 2 views
11

jquery (브라우저 기반)로 phonegap으로 개발 된 내 기본 iphone 앱은 웹 서버에 로그인 할 수 있으며 로그인 한 사용자는 해당 리소스에 액세스 할 수 있습니다. 서버는 사용자가 인증되면 쿠키에 세션 ID를 설정합니다.jquery가 포함 된 phonegap 앱에서 쿠키가 관리되는 곳은 어디입니까?

나는이 스키마에 문제가 없지만 경고 (document.cookie)를 할 때 빈 문자열을 반환하기 때문에 쿠키가 저장되는 곳이 궁금합니다.

jquery의 ajax 함수가 쿠키를 내부적으로 관리하고 요청이있을 때마다 동일한 도메인으로 보낼 수 있습니까?

+0

각 모바일 앱마다 iphone 샌드 박스 브라우저 환경이 보인다. 나는 이것이 이유 일 수 있다고 생각한다. – katsuya

답변

14

당신은 당신이 당신의 appDelegate.m 파일이 추가하세요 앱이 자동으로 쿠키를 관리하려면 다음

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage 
             sharedHTTPCookieStorage]; 
[cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

당신이 직접 세션 정보를 관리 할 경우이 같은 모든 아약스 요청을 할 수있다 : 나는 첫 번째 방법을 발견 할 때까지 내 응용 프로그램에서

var request = { 
       url: my_server_url, 
       success: function(response, status, request) { 
        var header = request.getAllResponseHeaders(); 
        var match = header.match(/(Set-Cookie|set-cookie): (.+?);/); 
        if(match) 
         my_saved_cookie = match[2]; 
       }, 
       } 

if(my_saved_cookie) 
    request.headers = { Cookie: my_saved_cookie }; 

$.ajax(request); 

내가 두 번째 방법을 사용하여 자신에 의해 세션 쿠키를 관리했다.

+2

첫 번째 방법은 iOS5 시뮬레이터에서 작동하지 않습니다. Apple에서 동작을 변경 한 것처럼 보입니다. 두 번째 방법은 정상적으로 작동합니다. – Chris

+1

이것은 Ajax 요청에 잘 작동합니다. 그러나 이미지 및 기타 리소스를 어떻게 처리해야합니다. – gviswanathan

+0

@Chris :이 방법은 iOS5에서 제대로 작동하므로 올바른 파일에 코드를 추가해야합니다. –

관련 문제