08. juni 2004 - 16:09Der er
33 kommentarer og 1 løsning
sessioner i forskellige vinduer
Hej Eksperter!
Jeg her et problem med sessioner. Det forholder sig således at jeg skal sende et sessionsobjekt fra et vindue til et andet via en http-get funktion, hvordan "griber" jeg SessionsId'et i det nye vindue?
Da session objekterne opbevares på serveren så formoder jeg at du vil have at de 2 vinduer er tilknyttet forskellige sessioner på server side, men at de skal kunne tilgå hinandens sessioner på server side.
Interessant problem stilling. Jeg tror ike det bliver en pæn løsning, men det må kunne gøres med lidt snedig brug af session listener og en singleton hvor man gemmer referencer.
Jeg vil ikke garantere for sikkerheden i det, men jehg kan godt prøve at bixe noget sammen.
hej arne! Jeg glemte en vigtig detalje, det drejer sig om en internetbutik jeg er ved at lave, og mit problem er at min betalingsgateway'udvyder (freeway) skal man lave et kald til deres server, og de så videresender til min betalingsform via en SSL forbindelse - i mellem denne forvirring bliver min session "væk" og jeg kan ikke få fat i mine sessionsvariable i min betalingsform. DERFOR vil jeg gerne sende dette sessions ID med i http-headeren, og det ser også ud til at virke, men når jeg skal "importere" dette sessionsobjekt og benytte mine sessionsvariable kan det ikke lade sig gøre....Har du et god svar?
Jeg har før haft samme problem, og "løst" det ved at lave betalingen i et popup-vindue som lukker til sidst, hvor popup-vinduet kører uden om sessionen.
Alternativt kan det muligvis lade sig gøre at overføre session id med URL rewrite.
fsconsult: det har jeg også tænkt - men hvordan sikre jeg så at betalingen er gennemført - inden at resten af koden udføres i det "oprindelige vindue"? Jeg kan jo ikke sende variable frem og tilbage mellem to browser vinduer vel?
hej arne! Jeg forstår ikke hvad du mener, men det jeg kan er at benytte session.getId i det oprindelige vindue, og sende denne værdi med i en HTTP-GET/POST med vadiable navnet HTTP_COOKIE til min dankortform - som åbner i et andet vindue - jeg kan så ikke finde udaf at importerer denne sessions-ID og derved få adgang til mine sessionsvariable i min dankortform...
Hej Arne! Jeg har fået det til at virke når der benyttes samme webserver, altså uden at jeg skal ud via min betalingswebhotel og en https. Når jeg skal videresendes fra mit betalingswebhotel, kommer sessionsId fint med over i URL linien, og hentes fint ned i jsp-siderne, men når jeg skal hente variable fra session1 virker det ikke! Flg.: linier virker: oldid = request.getParameter("HTTP_COOKIE"); HttpSession session2 = (HttpSession)xfer.get(oldid);
flg.: linie virker ikke: String Ordrenr = (String)session2.getAttribute("Ordrenr");
Jeg har gjort flg. på den foregående side: session.setAttribute("Ordrenr", p.getOrdrenr()); session.setAttribute("Amount",String.valueOf(p.getPrisIaltOrdre())); session.setAttribute("Merchantnr",p.getParamMerchantNumber()); session.setAttribute("ip",p.getParamIp()); session.setAttribute("DankortOK","0"); xfer.put(session.getId(), session);
og jeg kan også se at sessionid på side1 og på min dankortform (side2) er ens...så jeg forstår det simpelthen ikke....
NEJ! eller rettere - det ved jeg ikke - Når jeg prøver at benytte session2.getId() på betalingsformen - så får jeg flg. fejl fra Tomcat: type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
men når jeg benytter koden på samme server - uden at gå gennem min betalingsgateway, så kan jeg godt benytte både session.getId() og session2.getId() på min betalingsform, uden problem, hvilket medfører et de returnerer samme sessionsid. - så noget tyder på at koden er rigtig nok...
så arne - nu virker det ! Aner ikke hvorfor, men efter endnu en upload og lidt små tilretninger, (dog har jeg ikke indsat <session-timeout>) så virker det, så nu er alt er i orden. Tak for hjælpen - smid lige et svar, så du kan få point.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.