È possibile impostare o eliminare in modo affidabile un cookie durante l'elaborazione lato server di una chiamata Ajax (XHR)?

StackOverflow https://stackoverflow.com/questions/89579

Domanda

Ho eseguito personalmente un po' di test su questo argomento (durante l'elaborazione lato server di un gestore di richieste Ajax del framework DWR per l'esattezza) e sembra che sia possibile manipolare con successo i cookie, ma questo va contro molto di ciò che ho letto sulle migliori pratiche Ajax e come i browser interpretano la risposta da un XmlHttpRequest.Nota Ho testato su:

  • Cioè 6 e 7
  • Firefox 2 e 3
  • Safari

e in tutti i casi le operazioni standard dei cookie sull'oggetto HttpServletResponse durante la gestione delle richieste Ajax sono state interpretate correttamente dal browser, ma vorrei sapere se è consigliabile spingere la manipolazione dei cookie sul lato client o se questo server (molto più pulito) la gestione laterale dei cookie può essere considerata attendibile.

Gradirei risposte sia specifiche per il framework DWR che per Ajax in generale.

È stato utile?

Soluzione

XMLHttpRequest utilizza sempre il framework di connessione del browser Web.Questo è un requisito affinché i programmi AJAX funzionino correttamente poiché l'utente verrebbe disconnesso se l'oggetto XHR non avesse accesso al pool di cookie del browser.

In teoria è possibile che un browser Web condivida semplicemente i cookie di sessione senza utilizzare la struttura di connessione del browser, ma ciò non è mai accaduto (per quanto ne so) nella pratica.Anche il plug-in Flash utilizza le connessioni del browser Web.

Pertanto il risultato finale è che è sicuro manipolare i cookie tramite AJAX.Appena tieni a mente che la chiamata AJAX potrebbe non avvenire mai.Non sono eventi garantiti, quindi non contare su di loro.

Altri suggerimenti

Nel contesto del DWR potrebbe non essere "sicuro".

Dalla lettura il sito DWR dice:

È importante considerare la richiesta e la risposta HTTP come di sola lettura.Sebbene le intestazioni HTTP possano passare correttamente, ci sono buone probabilità che alcuni browser le ignorino.

Ho interpretato questo nel senso che l'impostazione dei cookie o degli attributi della richiesta è un no-no.
Detto questo, ho un codice che imposta gli attributi della richiesta (codice che ho scritto prima di leggere quella pagina) e sembra funzionare bene (a parte eliminare i cookie che ho menzionato nel mio commento sopra).

Manipolare i cookie dal lato client è piuttosto l'opposto della "migliore pratica".E non dovrebbe nemmeno essere necessario.I cookie HttpOnly non sono stati introdotti per niente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top