2013-02-26 8 views
8

Sto utilizzando la risposta di Rest per impostare i cookie sul lato client. Ma non riesco a vedere il cookie impostato quando apro "Risorse" in Chrome. Ma interessante, quando vado alle impostazioni di Chrome e controllo tutti i cookie, trovo i cookie che sto impostando. Ancora una volta, la funzione javascript di getCookie() di w3schools (o una versione migliore per gestire tutte le possibilità) non mi preleva nulla. Ho provato Firefox, succede la stessa cosa. Quando vedo tutti i cookie, vedo i miei cookie, ma la funzione JS getCookie() non mi restituisce nulla. Penso che i cookie non vengano impostati correttamente.JAX-RS Cookie in risposta non visualizzati nel browser

Ecco la mia risposta JAX-RS:

 

    Cookie c1 = new Cookie(Constants.SESSION_TOKEN, response 
       .getSessionToken().getValue()); 

     Cookie c2 = new Cookie(Constants.USER_IDENTIFIER, 
       response.getUserIdentifier()); 

     NewCookie cookie1 = new NewCookie(c1); 
     NewCookie cookie2 = new NewCookie(c2); 

     return Response.ok(jsonResponse, MediaType.APPLICATION_JSON) 
       .cookie(cookie1,cookie2).build(); 

E questa è la mia funzione di JS getCookie()

 
    function getCookies() { 
     var c = document.cookie, v = 0, cookies = {}; 
     if (document.cookie.match(/^\s*\$Version=(?:"1"|1);\s*(.*)/)) { 
      c = RegExp.$1; 
      v = 1; 
     } 
     if (v === 0) { 
      c 
        .split(/[,;]/) 
        .map(
          function(cookie) { 
           var parts = cookie.split(/=/, 2), name = decodeURIComponent(parts[0] 
             .trimLeft()), value = parts.length > 1 ? decodeURIComponent(parts[1] 
             .trimRight()) 
             : null; 
           cookies[name] = value; 
          }); 
     } else { 
      c 
        .match(
          /(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`a-z|~]+)=([!#$%&'*+\-.0-9A-Z^`a-z|~]*|"(?:[\x20-\x7E\x80\xFF]|\\[\x00-\x7F])*")(?=\s*[,;]|$)/g) 
        .map(
          function($0, $1) { 
           var name = $0, value = $1.charAt(0) === '"' ? $1 
             .substr(1, -1).replace(/\\(.)/g, "$1") 
             : $1; 
           cookies[name] = value; 
          }); 
     } 
     return cookies; 
    } 
    function getCookie(name) { 
     return getCookies()[name]; 
    } 

enter image description here enter image description here

+0

Chiunque di soccorso ?? –

risposta

2

Questo è strano. Ho provato a riprodurre il problema, ma tutto ha funzionato bene:

import javax.ws.rs.core.Cookie; 
import javax.ws.rs.core.NewCookie; 
import javax.ws.rs.core.Response; 

@GET 
@Path(value = "/test") 
public Response test() { 
    NewCookie c = new NewCookie("name1", "value1"); 
    Cookie cookie = new Cookie("name2", "value2"); 
    NewCookie c2 = new NewCookie(cookie); 
    return Response.ok("response1").cookie(c, c2).build(); 
} 

curl -i $URL mi ha dato:

HTTP/1.1 200 OK 
Server: Apache-Coyote/1.1 
Server: Apache-Coyote/1.1 
Set-Cookie: name1=value1; Version=1 
Set-Cookie: name2=value2; Version=1 
Date: Thu, 19 Sep 2013 13:52:43 GMT 
Content-Type: application/json 
Content-Length: 13 

["a","b","c"] 

I cookies hanno dimostrato anche in Risorse di Chrome.

2

Non sono sicuro del motivo per cui la funzione non fornisce le informazioni sui cookie, ma potrei avere un'idea del motivo per cui non viene visualizzata nel browser.

Mi ha aiutato a ricordare che è necessario visitare il percorso specifico su cui il cookie è stato impostato affinché il browser visualizzi il cookie nella console.

Nell'esempio sopra riportato, assicurarsi di visitare l'URL visualizzato nella sezione "Percorso:".

0

Per qualcuno che atterra su questo problema.

Questo problema si verifica quando il dominio o i valori del percorso non sono impostati correttamente

Utilizzare il frammento di seguito per impostare il percorso e il dominio

NewCookie cookie = new NewCookie("cookie-name", "cookie-value,"/", "", "cookie description", 1000000, false); 

Per esempio, Nel browser si dovrebbe vedere questi valori dopo il suo set

Set-Cookie:x-auth-cookie=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJtbTMiLCJhdWRpZW5jZSI6IkJST1dTRVIiLCJjcmVhdGVkIjoxNDg1MjU4MDcwMzQ2LCJyb2xlcyI6WyJBRE1JTiIsIlRFQUNIRVIiXSwiZXhwIjoxNDg2MjU4MDcwfQ.TM6oiCsOXh2zNou00H-5tkafAj40AngkbrCA62Vdyi5si_5hZFdmZFfitmK_bgRJexmFC49KlpAaRzGJF8bvMQ;Version=1;Comment="cookie description";Domain=;Path=/;Max-Age=1000000 
Problemi correlati