programing

phonegap: 쿠키 기반 인증(PHP)이 작동하지 않음 [webview]

css3 2023. 9. 12. 20:09

phonegap: 쿠키 기반 인증(PHP)이 작동하지 않음 [webview]

저는 senscha touch, HTML5, phonegap을 래퍼로 사용하여 모바일 웹앱을 작업하고 있습니다.

저는 PHP-Authentication(Cookie)과 ajax-requests를 사용하고 있습니다.사파리나 크롬에서는 모든 것이 정상적으로 작동하지만, 폰갭(웹뷰)으로 배포된 후에는 더 이상 작동하지 않습니다.

어떤 도움이라도 주시면 감사하겠습니다 :)

보다 자세한 내용은 다음과 같습니다.

내 앱의 모든 데이터는 ajax 요청을 통해 내 서버 구성 요소 "mobile.php"로 로드됩니다.기본 PHP-Auth를 사용하여 사용자를 인증합니다.

  1. AJAX-Request [사용자 이름, 비밀번호] -> 모바일.php -> 세션 설정(cookie
  2. 인증이 성공한 경우 다른 모든 요청

일반 사파리 웹사이트와 웹뷰의 차이점은 무엇입니까?

알아냈어요

phonegap_gap.m 파일을 변경하고 init 메서드에 다음을 추가해야 합니다.


- (id) init
{   
    /** If you need to do any extra app-specific initialization, you can do it here
     *  -jm
     **/
    //special setting to accept cookies via ajax-request
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage 
                                          sharedHTTPCookieStorage]; 
    [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

    return [super init];
}

웹뷰가 ajax 요청에서 쿠키를 받을 수 있게 해줍니다.

Phonegap AJAX 요청이 콜백을 정상적으로 실행하지 않는 경우 그 이유가 될 수 있습니다.

응답이 쿠키를 설정하려고 할 때 Michael의 수정 작업을 수행하지 않은 경우 (jquery) AJAX 요청이 조용히 실패합니다. 성공도 오류도 없습니다. 서버가 실제로 요청을 수신하고 응답을 보냈음에도 불구하고 콜백이 발생합니다.쿠키에 관심이 없어도 이렇게 해야 하는 것 같습니다.

누군가에게 도움이 되었으면 좋겠습니다.

저는 쿠키에 신경 쓰지 않고 왜 콜백이 작동하지 않는지 알아내기 위해 몇 시간을 보냈습니다.

안드로이드에서도 작동하는 솔루션이 있습니다.

임의 HTTP(S) 요청을 수행하려면 플러그인 https://github.com/wymsee/cordova-HTTP 을 설치합니다.

교체하다XMLHttpRequest플러그인 대체 기능(cordovaHTTP.get아니면cordovaHTTP.post):

cordovaHTTP.post("https://example.com/login", {email: 'xyz@example.com', passwd: "s3cr3t"}, {}, function(response) {
    console.log('success');
    console.log(response);
}, function(response) {
    console.log('failure');
    console.log(response);
});

응답에는 상태, 데이터 및response.headers["Set-Cookie"], 이름, 값, 도메인, 경로 및 HttpOnly 플래그까지 구문 분석할 수 있습니다;-)

쿠키를 저장할 수 있습니다.LocalStorage그리고 후속 요청을 보냈습니다(참조).cordovaHTTP.setHeader()아니면header의 매개 변수.get/.postmethods) 데스크톱 브라우저에서 인증된 사용자를 시뮬레이션합니다.

쿠키를 저장하고 삭제하는 가장 좋은 방법은 라이브인 내 앱에서 잘 작동합니다.

쿠키에 값을 저장하려면 다음과

window.localStorage.setItem("key", "value");

쿠키에서 값을 가져오려면 다음과 같이 하십시오.

var value = window.localStorage.getItem("key");

쿠키 값을 삭제하려면

window.localStorage.removeItem("key");
window.localStorage.clear();

언급URL : https://stackoverflow.com/questions/3709315/phonegap-cookie-based-authentication-php-not-working-webview