7

Ich mache derzeit API-Aufrufe an mein Backend mit dem von Google Cloud Endpoint generierten JavaScript-Client. Das Problem ist, dass die Cookies für meine Seite nicht zu den HTTP-Anfragen hinzugefügt werden. Wie kann ich das Gitkit gtoken Cookie zu meiner Anfrage hinzufügen?Fügen Sie Cookies in HTTP-Anfragen ein, wenn Sie den Google Cloud Endpoints JavaScript-Client verwenden

  • Backend ist Google App Engine Java
  • Mit Goole Cloud Endpoints meine API geladen
  • Mit der Google Cloud Endpoints JavaScript Web-Client zu bauen, wie gapi.client.load('myApi', 'v1', resourceLoaded, 'https://my-project-id.appspot.com/_ah/api');

folgt habe ich bereits konfiguriert Google Cloud Endpunkte im Backend, um Cookies zuzulassen. auth = @ApiAuth(allowCookieAuth = AnnotationBoolean.TRUE)

Mein Endpunkt sieht wie folgt aus.

@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! 
    */ 

    ... 

} 

Ich Telefonieren mit dem Google Cloud Endpoints JS-Client als so.

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

Gibt es etwas, was ich tun muss, um sicherzustellen, Antrag in den gtoken Cookie die Endpoints JS-Client enthält?

+0

Open Bounty und noch keine Antworten! Kann ich etwas tun, um diese Frage klarer zu machen? –

+1

Hallo Marc, Sie können Screenshots von Cookies Storage + Request-Header hinzufügen und erstellen Sie eine plunker/jsfiddle/jsbin, um das Problem zu reproduzieren. –

+0

@AlexanderTrakhimenok Meinst du die Speicherung von Cookies auf der Seite des Browsers? –

Antwort

2

Sie besser Screenshots von Cookies Speicher + Anfrage-Header hinzufügen und erstellen Sie eine plunker/jsfiddle/jsbin, um das Problem zu reproduzieren.

Es besteht die Möglichkeit, dass Cookies nicht gesetzt oder nicht an den Server gesendet werden. Sie müssen lokalisieren, wo ein Problem ist. Wenn es per Kabel über den Browser gesendet wird, ist die Ausgabe auf der Serverseite. Wenn es im Speicher von Cookies ist, aber nicht gesendet wird, ist es ein Client-Problem. Wenn es nicht im Speicher ist, gibt es einfach nichts zu senden und es ist ein anderes Problem herauszufinden, warum sie überhaupt nicht beim Kunden sind.

Sie können Cookies & Anfragen Header in Devtools Ihres Browsers anzeigen. Und ja, Cookies werden automatisch gesendet, wenn sie nicht abgelaufen sind und passen zum Host & Pfadpräfix.

+0

Mein Problem wurde gelöst. Das Problem war, dass ich von meinem localhost: 8080-dev-Server Aufrufe an meine API richtete, die auf einem Remote-GAE-Server gehostet wurde. Ich dachte, dass jedes Cookie für diese Seite in alle Anfragen an jeden Server enthalten wäre. Ich habe nicht verstanden, dass das Anfrageziel mit der Domain des Cookies übereinstimmen muss. –

+0

Hallo Marc, kannst du mir den Weg zur Lösung dieses Problems erklären? – Chameron