[Servlet] Ritornare all'URL chiamante

di il
6 risposte

[Servlet] Ritornare all'URL chiamante

Vorrei sapere com'è possibile ritornare alla pagina chiamante?

Ad esempio effettuo il Login e in automatico fa una sendRedirect all'URL chiamante.

6 Risposte

  • Re: [Servlet] Ritornare all'URL chiamante

    Paolovox ha scritto:


    Vorrei sapere com'è possibile ritornare alla pagina chiamante?

    Ad esempio effettuo il Login e in automatico fa una sendRedirect all'URL chiamante.
    Immagino tu stia parlando di uno scenario del tipo:

    1) L'utente chiede la pagina blabla/qualcosa.html
    2) L'utente però non è loggato e viene fatto un redirect automatico a blabla/login.html (questo lo si fa con un Filter di autenticazione o con qualche altro meccanismo applicato generalizzato in Servlet o altro)
    3) L'utente invia il form di login
    4) Si dovrebbe ritornare alla pagina blabla/qualcosa.html

    Le possibilità sono svariate: mettere l'url originale come query param di quello di login, o usare i cookie (ma è più critico) oppure usare un qualche altro meccanismo per cui l'url viene temporaneamente memorizzato lato server e si passa al login solo una specie di "token" o qualcosa del genere.
  • Re: [Servlet] Ritornare all'URL chiamante

    Non posso utilizzare i cookies perchè mi è stato imposto di dover gestire la sessione nei casi in cui il browser abbia i cookies abilitati e non.
    Il mio scenario è il seguente:
    Pagina dinamica Categorie -> Pagista Login statica con form che richiama la servlet per il login

    Con la query string concatenata, la perdo nella pagina statica.

    Avevo pensato di fare così:
    Utilizzare una servlet Login dove il doGet mi ritorna la pagina statica login.html e il doPost gestisce il form.
  • Re: [Servlet] Ritornare all'URL chiamante

    Ma così nemmeno risolvo nulla. Si potrebbe aggiungere un nuovo Header nel messaggio HTTP, e poi lo leggo appena appena devo?
  • Re: [Servlet] Ritornare all'URL chiamante

    Paolovox ha scritto:


    Non posso utilizzare i cookies perchè mi è stato imposto di dover gestire la sessione nei casi in cui il browser abbia i cookies abilitati e non.
    Sappi che, detto molto in generale, la "sessione" come intesa dalle specifiche delle Servlet può essere mantenuta tra client e server sia tramite cookie che senza cookie. Le specifiche delle Servlet infatti prevedono 2 meccanismi per passare dal client al server il ID della sessione.

    Paolovox ha scritto:


    Con la query string concatenata, la perdo nella pagina statica.
    Detto di nuovo in generale, mescolare pagine dinamiche e statiche è sempre abbastanza critico perché nelle pagine statiche ovviamente non si possono incorporare ID, token e quant'altro eventuale negli url di link/form/img ecc..

    Paolovox ha scritto:


    Si potrebbe aggiungere un nuovo Header nel messaggio HTTP, e poi lo leggo appena appena devo?
    Se il client è un browser (e non un'altra applicazione desktop ad-hoc), ed escludendo le chiamate HTTP con tecniche AJAX, allora NON è possibile manipolare gli header di request/response, in quanto non vengono esposti nemmeno a livello di scripting.
  • Re: [Servlet] Ritornare all'URL chiamante

    Ti ringrazio per l'ennesima volta.
    Quindi ne ho dedotto che per la gestione di richieste con cookies disabilitati, è richiesta una pagina di login dinamica, così nell'action del form ci inserisco le queries param che voglio.

    Scusa infatti mi sono espresso male, la sessione senza cookie la gestisco con la tecnica dell'URL rewriting.
  • Re: [Servlet] Ritornare all'URL chiamante

    Paolovox ha scritto:


    Quindi ne ho dedotto che per la gestione di richieste con cookies disabilitati, è richiesta una pagina di login dinamica
    [...] con la tecnica dell'URL rewriting.
    Sì, è il "URL rewriting" e servono pagine dinamiche principalmente perché tutti gli url nella pagina andrebbero encodati con il ID di sessione (se si vuole che la sessione funzioni completamente anche senza cookie). Per questo nelle JSP è tipico usare il <c:url> della JSTL che fa già questo in automatico.
Devi accedere o registrarti per scrivere nel forum
6 risposte