2017-02-03 3 views
5

ich HttpOnly Cookies verwenden möchten, und ich stellte es in Java wie folgt:Httponly-Cookies nicht auf Anfrage gesendet

... 

Cookie accessTokenCookie = new Cookie("token", userToken); 
accessTokenCookie.setHttpOnly(true); 
accessTokenCookie.setSecure(true); 
accessTokenCookie.setPath("/"); 
response.addCookie(accessTokenCookie); 
Cookie refreshTokenCookie = new Cookie("refreshToken", refreshToken); 
refreshTokenCookie.setHttpOnly(true); 
refreshTokenCookie.setSecure(true); 
refreshTokenCookie.setPath("/"); 
response.addCookie(refreshTokenCookie); 

... 

ich der Client-Seite die Antwort mit den Cookies bekam, aber wenn ich die nächste Anfrage sende ich Ich habe keine Cookies auf Anfrage. Vielleicht vermisse ich etwas, aber wie ich verstanden habe, müssen diese HttpOnly Cookies vom Browser bei jeder Anfrage (JavaScript hat keinen Zugriff auf diese Cookies) zurück an den definierten Pfad gesendet werden.

Ich habe folgende Anfrage Header:

Accept:application/json, text/plain, */* 
Accept-Encoding:gzip, deflate, br 
Accept-Language:en-US,en;q=0.8,hu;q=0.6,ro;q=0.4,fr;q=0.2,de;q=0.2 
Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ= 
Connection:keep-alive 
Content-Length:35 
content-type:text/plain 
Host:localhost:8080 
Origin:http://localhost:4200 
Referer:http://localhost:4200/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36 
X-Requested-With:XMLHttpRequest 

und folgende Antwort-Header:

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Origin:http://localhost:4200 
Access-Control-Expose-Headers:Access-Control-Allow-Origin, Content-Type, Date, Link, Server, X-Application-Context, X-Total-Count 
Cache-Control:no-cache, no-store, max-age=0, must-revalidate 
Content-Length:482 
Content-Type:application/json;charset=ISO-8859-1 
Date:Fri, 03 Feb 2017 13:11:29 GMT 
Expires:0 
Pragma:no-cache 
Set-Cookie:token=eyJhbGciO;Max-Age=10000;path=/;Secure;HttpOnly 
Set-Cookie:refreshToken=eyJhb8w;Max-Age=10000;path=/;Secure;HttpOnly 
Vary:Origin 

Auch in der Client-Seite verwende ich withCredentials: true in Angular2 und X-Requested-With:XMLHttpRequest als Request-Header.

Und es ist Cross Domain.

+0

Hallo !! Ich habe ein ähnliches Problem gehabt. Wenn ich HTTP-Flag nur entfernt, funktioniert es. Hast du irgendeine andere Arbeit gefunden? –

+0

Durch Entfernen der Secure-Flagge von Cookies, das Problem gelöst –

+0

Vielen Dank !! Es funktioniert –

Antwort

1

Ja, Sie stimmen mit dem Cookie überein, dass Ihr Browser das Cookie automatisch senden soll, solange es nicht abgelaufen ist und das httpOnly-Flag bedeutet, dass es nicht über JavaScript aufgerufen oder manipuliert werden kann.

jedoch

Sie müssen sicherstellen, dass das Cookie Sie senden nicht Cross-Domain ist, wenn Sie es Cross-Domain benötigen, müssen Sie es anders behandeln.

+0

Ja, es ist ein Cross-Domain-Cookie, wie muss ich damit umgehen? –

+0

Persönlich für Ihre Situation würde ich JWT und Header verwenden, aber wenn Sie Cross-Domain-Cookies verwenden müssen http://StackOverflow.com/Questions/3342140/cross-domain-cookies –

+0

Ich aktualisierte die Frage, um genauer zu sein –

Verwandte Themen