7

Attualmente sto effettuando chiamate API al mio back-end utilizzando il client JavaScript generato da Google Cloud Endpoint. Il problema è che i cookie per la mia pagina non vengono aggiunti alle richieste HTTP. Come posso aggiungere il cookie gtoken Gitkit alla mia richiesta.Includono i cookie nelle richieste HTTP quando si utilizza il client JavaScript di Google Cloud Endpoint

  • backend è Google App Engine Java
  • Utilizzando Goole cloud Endpoint per costruire il mio API
  • utilizzando il client Web di Google Cloud Endpoints JavaScript caricato come segue gapi.client.load('myApi', 'v1', resourceLoaded, 'https://my-project-id.appspot.com/_ah/api');

ho già configurato Google Cloud Endpoint, sul back-end, per consentire i cookie. auth = @ApiAuth(allowCookieAuth = AnnotationBoolean.TRUE)

Il mio endpoint si presenta come segue.

@ApiMethod(path = "user-account") 
public UserAccount get(HttpServletRequest httpRequest) { 

    GitkitUser gitkitUser = Gitkit.validate(httpRequest); // returns null 

    Cookie[] cookies = httpRequest.getCookies(); 
    log.severe("# of cookies: " + cookies.length); 
    for (Cookie cookie : cookies) { 
     log.severe("cookie name: " + cookie.getName()); 
     log.severe("cookie value: " + cookie.getValue()); 
    } 

    /* 
    * Logs 1 for # of cookies, with a cookie name of "G_ENABLED_IDPS" 
    * a value of "google". No gtoken cookie, even though I have 
    * checked and there is one! 
    */ 

    ... 

} 

sto facendo chiamate con il client di Google Cloud Endpoints JS come così.

gapi.client.myApi.userAccountResource.get().execute(function (resp){ 
    ... 
}); 

c'è qualcosa che devo fare per assicurarsi che il client Endpoint JS include il cookie gtoken in esso è richiesta?

+0

Open taglie e ancora nessuna risposta! C'è qualcosa che posso fare per rendere questa domanda più chiara? –

+1

Ciao Marc, puoi aggiungere schermate di memorizzazione dei cookie + intestazioni di richiesta e creare un plunker/jsfiddle/jsbin per riprodurre il problema. –

+0

@AlexanderTrakhimenok Intende la memorizzazione dei cookie dal lato del browser? –

risposta

2

È meglio aggiungere schermate di memorizzazione dei cookie + intestazioni di richiesta e creare un plunker/jsfiddle/jsbin per riprodurre il problema.

Ci sono possibilità che i cookie non siano impostati o non inviati al server. Devi localizzare dov'è un problema. Se è inviato via cavo dal browser, il problema è dal lato server. Se si trova nella memoria dei cookie ma non viene inviato, si tratta del problema del client. Se non è in archivio non c'è niente da inviare ed è un problema diverso scoprire perché non sono affatto al cliente.

È possibile visualizzare i cookie & richieste intestazioni in devtools del browser. E sì, i cookie vengono inviati automaticamente se non scaduti e corrispondono al prefisso del percorso dell'host &.

+0

Risolto il mio problema. Il problema era che stavo effettuando chiamate alla mia API, ospitata su un server GAE remoto, dal mio localhost: 8080 dev server. Pensavo che qualsiasi cookie per quella pagina sarebbe stato incluso in tutte le richieste su qualsiasi server. Non ho capito che la destinazione della richiesta doveva corrispondere al dominio del cookie. –

+0

Ciao Marc, potresti farmi sapere come risolvere questo problema? – Chameron