Informazioni sui cookie HTTP in Indy 10 per Delphi XE2

3

Ho lavorato recentemente con i server / client HTTP di Indy 10 su Delphi XE2, e devo assicurarmi di comprendere correttamente la gestione delle sessioni. Nel server, ho un "secchio" di sessioni, che è una lista di oggetti che rappresentano ciascuno una sessione unica. Non uso username e password per autenticare gli utenti, ma preferisco usare una chiave API unica che viene rilasciata a un client e ha una scadenza.

Quando un cliente desidera connettersi al server, per prima cosa effettua l'accesso chiamando il comando "login", che è un percorso come questo: http://localhost:1234/login?APIKey=abcdefghij . Il server controlla questa chiave API sul database e, se è valida, crea una nuova sessione nel bucket, emette un nuovo cookie (stringa univoca) e imposta i cookie di risposta con Success=Y e Cookie=abcdefghij .

Questo è il posto dove ho la domanda. Supponendo che il client abbia un proprio metodo di gestione dei cookie, il client riceverà questa risposta di login dal server e automaticamente salverà i cookie se necessario. Qualsiasi richiesta futura dal client al server invierà automaticamente insieme a questi cookie, e il lato client non deve necessariamente preoccuparsi di impostare questi cookie quando si inviano richieste al server. Giusto?

PS - Sto facendo questa domanda qui su programmers.stackexchange.com perché non ho ritenuto opportuno chiedere su stackoverflow.com. Se qualcuno pensa che questo sia abbastanza appropriato per stackoverflow.com, per favore fatemelo sapere.

    
posta Jerry Dodge 03.12.2012 - 05:27
fonte

1 risposta

4

Sì, il client, assumendo un browser Web, invierebbe il cookie per quel dominio. Non è necessario inviarlo ogni volta. Sebbene molte applicazioni rimandino il cookie ad ogni pagina in modo tale da estendere la scadenza del cookie.

Probabilmente non hai bisogno del campo "success" - o l'ID di sessione memorizzato nel cookie sarà valido, o non lo è. Se si sta effettivamente tentando di restituire il successo o l'errore al client, inviare di nuovo un po 'di JSON come parte del corpo della risposta. Questo sarà più facile da gestire dal lato client in javascript.

    
risposta data 03.12.2012 - 05:53
fonte

Leggi altre domande sui tag