Domanda

Dal momento che HTTP è un protocollo stateless, quando un client effettua una serie di richieste al server, come fa il server identifica in modo univoco le richieste di un particolare client per un periodo di tempo dire t1, t2, t3 ..

ho passato in rassegna nel web e sono imbattuto in termini come id di sessione, la riscrittura degli URL e biscotti. Ma sarebbe bello se qualcuno lo spiega in un modo migliore. In particolare, che parte della richiesta HTTP e la risposta potrebbe essere utilizzato per il monitoraggio della sessione?

È stato utile?

Soluzione

Come lei ha ricordato, modi comuni per implementare HTTP session tracking includono la riscrittura degli URL e biscotti. monitoraggio sessione richiede in sostanza che un ID di sessione viene mantenuto attraverso più richieste al server. Questo significa che ogni volta che un determinato client effettua una richiesta al server, esso passa lo stesso ID di sessione. Il server può utilizzare questo ID di ricercare le informazioni sulla sessione mantiene.

Quando si utilizza i cookie, il server chiede al cliente di memorizzare un cookie impostando l'intestazione della risposta HTTP Set-Cookie. Questo cookie contiene l'ID di sessione univoco assegnato a quel cliente - in questo esempio la stringa 'ABAD1D':

    Set-Cookie: JSESSIONID=ABAD1D;path=/

Il cookie è poi inviato al server da parte del client utilizzando l'intestazione della richiesta HTTP Cookie su ogni richiesta e quindi il server viene informato a ogni richiesta l'ID di sessione attualmente assegnato al client.

    Cookie: JSESSIONID=ABAD1D

Quando si utilizza la riscrittura degli URL, lo stesso ID di sessione viene invece inviato da qualche parte nel URL. Anche in questo caso, il server estrae l'ID di sessione dall'URL in modo che possa occhiata la sessione per un particolare client:

    http://my.app.com/index.jsp;JSESSIONID=ABAD1D

Tuttavia, il server deve anche fare in modo che tutti gli URL delle pagine web inviati al client vengono riscritti anche per contenere quel particolare ID di sessione client. Come l'ID di sessione è codificato negli URL, questo metodo di tracciamento della sessione è trasparente per il browser. Spesso un server farà ricorso a riscrittura degli URL se lo trova è in grado di impostare un cookie di sessione sul client -. Il che implica che il client non supporta / Consenti cookie

Si noti che le sessioni possono scadere. Questo significa che se il server non 'vedere' un dato ID di sessione per un periodo di tempo, può cancellare i dati della sessione di preservare le risorse.

Altri suggerimenti

  

In particolare la parte del HTTP   richiesta e risposta sarebbero stati utilizzati per   session tracking?

Nella risposta HTTP, il server può impostare un cookie. Lo fa con l'intestazione Set-Cookie. Ad esempio:

Set-Cookie: session=12345; path=/

Il cliente quindi restituisce il valore di tutti i cookie che corrispondono alle proprietà che sono stati fissati con il cookie, che possono includere percorso (come sopra) e il dominio, e che non sono ancora scaduti.

Il cookie viene inviato al server come parte delle intestazioni HTTP. Ad esempio:

Cookie: session=12345

Nessuna delle informazioni proprietà originale viene inviato con il cookie.

Un cookie unico consente al server di associare una chiave univoca con una particolare istanza del browser. Il server può quindi utilizzare la chiave come un indice in una tabella hash o una tabella di database che contiene informazioni sullo stato unico per il singolo utente.

monitoraggio Session è una cosa lato server.

Un server web rilascia alcune identificativo di sessione che viene restituito al browser. Browser invia questo identificatore di sessione con ogni richiesta.

Questa è probabilmente fatto utilizzando i cookie in modo trasparente per l'utente.

la gestione delle sessioni è nella maggior parte dei casi trattati con l'invio di un biscotto al cliente . il cookie sarebbe stato inviato al server a ogni richiesta da quel particolare cliente.

Il session id sarà associato con alcune risorse sul lato server (file, spazio ram) in modo che il server di leggendo la session id nel cookie può trovare questa risorsa e quindi sapere quale cliente è stato.

trovare abbastanza dettagli href="http://www.sbalasani.com/2015/12/servlets-session-management.html" qui

sessioni HTTP sono l'approccio consigliato. Una sessione identifica le richieste provenienti dallo stesso browser durante il periodo di conversazione. Tutte le servlet possono condividere la stessa sessione. Il JSESSIONID è generato dal server e può essere passato al cliente attraverso i cookie, URL ri-scrittura (se i cookie sono disattivati) o meccanismo incorporato SSL. Si deve prestare attenzione per ridurre al minimo la dimensione degli oggetti memorizzati nella sessione e oggetti memorizzati nella sessione dovrebbe essere serializzabile. In un servlet Java la sessione può essere ottenuto come segue:

HttpSession session = request.getSession (); // restituisce sessione corrente o di una nuova sessione

sessioni possono essere scaduta (configurati in web.xml) o manualmente invalidata.

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