2011-12-09 15 views
19

Sto sviluppando un'app PhoneGap in Xcode che comunica con un server utilizzando una web API. L'API accetta richieste HTTP standard. Come parte del processo di autenticazione dell'utente viene impostato un cookie che dovrebbe essere trasmesso nell'intestazione http con ogni successiva richiesta all'api.Memorizzazione e invio di cookie http non funzionanti nell'app PhoneGap

Durante la chiamata di accesso all'API, posso chiaramente vedere che un cookie viene inviato indietro come parte dell'intestazione della risposta. Tuttavia, non sembra essere memorizzato, né viene inviato nell'intestazione della richiesta http con ogni nuova chiamata API.

Per effettuare chiamate all'api, sto utilizzando la chiamata $.getJSON di jQuery.

ho trovato la seguente domanda e risposta: phonegap: cookie based authentication (PHP) not working [webview]

La risposta di cui sopra suggerisce l'impostazione del NSHTTPCookieStorage cookieAcceptPolicy al NSHTTPCookieAcceptPolicyAlways in app delegato del init. L'ho provato e non sembra che risolva il problema. Inoltre, in base a Apple's documentation, il valore predefinito cookieAcceptPolicy è NSHTTPCookieAcceptPolicyAlways.

I suggerimenti su come ottenere la memorizzazione dei cookie e l'invio di lavoro sono molto apprezzati.

+2

Io uso esattamente questo nelle mie app e funziona perfettamente su iPhone/iPad ... – Leon

+0

Hai esaminato questo argomento? http://stackoverflow.com/questions/4262636/can-jquery-getjson-put-a-domains-cookies-in-the-header-of-the-request-it-makes – sleepwalker

+0

Ho visto argomenti simili, tuttavia, come ho capito PhoneGap può fare questo genere di cose ... "Ciò significa che è possibile effettuare richieste a punti finali di API che normalmente non si potevano accedere se questo fosse stato pensato per essere implementato per un'impostazione desktop." http://wiki.phonegap.com/w/page/42450600/PhoneGap%20Ajax%20Sample –

risposta

2

il CookieStorage deve salvare e salvare il cookie, da utilizzare nelle richieste successive. li aggiunge anche automaticamente se si utilizza, ad esempio, NSURLRequest ... ma solo se è per lo stesso dominio impostato sul cookie.

ho incontrato problemi simili molte volte in passato,

possibili cause possono essere:

1) il cookie ha un dominio diverso da quello che si sta inviando in merito alla richiesta, probabilmente a causa di un redirect ... per esempio, se le richieste vengono inviate a http://www.somesite.com, che in realtà è il reindirizzamento a http://somesite.com (e questo è il vero nome del dominio, cookie viene salvato per la sometime.com URL/dominio e ora www.somesite.com

2) probabilmente le intestazioni "solo sessione" e "data di scadenza" sono impostate erroneamente su th e cookie, che fa sì che la memorizzazione dei cookie li scarti

sperare che questo aiuti, lo so per esperienza l'archiviazione dei cookie può essere frustrante a volte.

Problemi correlati