# Session - Cookie



## MQue (4. Aug 2009)

Hallo,

bin in meiner Web- Anwendung gerade draufgekommen, dass pro Client (Firebird) nur eine Session eröffnet wird, d.h. wenn ich auf dem Client 5 mal den Firefox öffne, der Server diese 5 wie einen behandelt sprich nur einen Session für diese 5 erzeugt,
Das hängt meines wissens nach mit den Cookies zusammen, wenn der Firefox ein Cookie für einen Server speichert dann gilt das Cookie scheinbar für alle Instanzen des Firefox.

Meine Frage wäre jetzt, wie man es realisieren kann, dass ich jede Firefox-Instanz (bzw. in weiterer Folge auch jeden Firefox-Tab) als eingenen Client behandeln kann, also für jede Firefox Instanze am Client eine eigene Session am Server habe?

Ich hab irgendwas gelesen von Filtern, kann das aber jetzt nicht einordnen,
Wäre Euch dankbar für Ratschläge.
lg


----------



## maki (4. Aug 2009)

Wozu überhaupt mehrmals einloggen von einem Browser/Rechner???

Intranet oder Internet?

In ersterem Falle kannst du dir einen Servlet Filter schreiben, der dafür sorgt, dass es pro IP Addresse nur eine einzige Session gibt, auch kann man so begrenzen, wie oft sich Leute anmelden (ein einziges mal muss reichen).


----------



## MQue (4. Aug 2009)

maki hat gesagt.:


> Wozu überhaupt mehrmals einloggen von einem Browser/Rechner???
> 
> Intranet oder Internet?
> 
> In ersterem Falle kannst du dir einen Servlet Filter schreiben, der dafür sorgt, dass es pro IP Addresse nur eine einzige Session gibt, auch kann man so begrenzen, wie oft sich Leute anmelden (ein einziges mal muss reichen).



Naja, es handelt sich um eine Visualisierung, bei der man mehrere Fenster (Tabs oder FireFoxies) offen haben kann und diese sollen am Server alle extra behandelt werden (vorgabe).
Gibts da eine Möglichkeit, so irgendwie -> neue Firefox- Instanze -> neue Session (neues Cookie)?


----------



## maki (4. Aug 2009)

> Gibts da eine Möglichkeit, so irgendwie -> neue Firefox- Instanze -> neue Session (neues Cookie)?


Kenne keine.

Auf die schnelle fällt mir nur ein, ayuf Cookies zu verzichten und die SessionId per URL mitzuschicken..


----------



## MQue (4. Aug 2009)

maki hat gesagt.:


> Kenne keine.
> 
> Auf die schnelle fällt mir nur ein, ayuf Cookies zu verzichten und die SessionId per URL mitzuschicken..



also du meinst encodeURL("url");

sch...., das ist ganz blöd, na dann sollen sich die Vorgesetzen was anders einfallen lassen, das steht im Pflichtenheft unter "unbedingt vorhanden" drinnen.


----------



## byte (4. Aug 2009)

Michael1234 hat gesagt.:


> Naja, es handelt sich um eine Visualisierung, bei der man mehrere Fenster (Tabs oder FireFoxies) offen haben kann und diese sollen am Server alle extra behandelt werden (vorgabe).
> Gibts da eine Möglichkeit, so irgendwie -> neue Firefox- Instanze -> neue Session (neues Cookie)?



Was heisst denn "extra behandelt"? Warum musst Du umbedingt mehrere Sessions pro User öffnen?


----------



## maki (4. Aug 2009)

Wie gersagt, mit URL Rewriting sollte es gehen, aber URL Rewriting hat so seine eigenen Gefahren/Probleme.


----------



## MQue (4. Aug 2009)

byte hat gesagt.:


> Was heisst denn "extra behandelt"? Warum musst Du umbedingt mehrere Sessions pro User öffnen?



jede Seite/Tab des Firefoxes soll in einer Datenbank gespeichert werden, weiters werden für diese Seite/Tab Variablen festgelegt, die auf dieser Seite angezeigt werden sollen.
Also es sollte jede Seite extra behandelt werden.


----------



## byte (4. Aug 2009)

Und was hat das mit der Session zu tun? Du brauchst doch nicht mehrere Sessions, um je nach Seite verschiedene Variablen abzulegen!? :bahnhof:


----------



## MQue (5. Aug 2009)

byte hat gesagt.:


> Und was hat das mit der Session zu tun? Du brauchst doch nicht mehrere Sessions, um je nach Seite verschiedene Variablen abzulegen!? :bahnhof:



Das nicht aber es soll bei jedem öffnen eines Tabs / einer Firefox- Instanz die login- Seite angezeigt werden, und dafür schaue ich momentan, gibts schon eine Session, wenn nein, eine anlegen und die login- Seite liefern, wenns die Session schon gibt dann die Seite nach der login- Seite senden. 
Dann hab ich auf der linken HTML- Seite einen Seiten- Auswahlbaum. Wenn eine Seite angewählt wird, wird per AJAX das Hintergrundbild (svg) dieser Seite an den Server gesendet, der Server parst das svg und gibt dann Name=Wert1&Name=Wert2... zurück und der Client (JS) baut dann die Werte in das svg ein.


----------



## mvitz (5. Aug 2009)

Ich meine mal irgendwo gelesen zu haben, dass es zur Zeit noch nicht möglich ist, zu unterscheiden, ob die Seite in einem neuen Tab auf ist oder nicht. Man hat halt nur die Möglichkeiten IP oder Session zur Zeit und beides ist ja für jedes Tab identisch.


----------



## maki (5. Aug 2009)

habi55 hat gesagt.:


> Ich meine mal irgendwo gelesen zu haben, dass es zur Zeit noch nicht möglich ist, zu unterscheiden, ob die Seite in einem neuen Tab auf ist oder nicht. Man hat halt nur die Möglichkeiten IP oder Session zur Zeit und beides ist ja für jedes Tab identisch.


Mit URL Rewriting schon, sagte ich doch bereits...


----------



## mvitz (5. Aug 2009)

maki hat gesagt.:


> Mit URL Rewriting schon, sagte ich doch bereits...



Ok  Ist aber nicht sonderlich schön  Aber da diese Anforderung so selten ist, muss man hier wohl die nicht so schöne Methode anwenden.


----------



## maki (5. Aug 2009)

Von URL-Rewriting wird auch abgeraten, denn wenn der Client (Browser) einmal einen Request absetzt ohne die URL umgebaut zu haben, gibt es eine neue Session... d.h. jeder Link/form-action muss die URL umbauen und die SessionId einfügen, sonst gibt es eine neue Session...

Was imho aber sehr schwer zu erkennen ist, ob mit CTRL+N ein neuer Tab/Browser geöffnet worden ist, da können sog. Token helfen, jedes Token ist nur für einen einzigen Request gültig, empfängt der Server einenes zweimal, knallts.

Alles in allem ist das natürlich nicht schön bzw. Elegant, aber mehrere Sessions von einem User ist imho nicht sehr Sinnvoll.
Anscheinend verstand Michael1234s Spek.-Schreiber nicht allzuviel vom Web.


----------



## MQue (5. Aug 2009)

maki hat gesagt.:


> Anscheinend verstand Michael1234s Spek.-Schreiber nicht allzuviel vom Web.



Da hast du ins schwarze getroffen, ich konnte das auch (noch) nicht abwenden, da mir das nicht klar war, aber man lernt nie aus 

Was mich noch interessieren würde ist, wenn ich 2 Firefox- Instanzen öffne und es am Server nur eine Session für diese 2 Instanzen gibt, und die Kommunikation mit AJAX realisiert ist, wie wird das dann vom Browser oder vom Betriebssystem realisiert bzw. unterschieden, wo die Werte hingehören -> zur einen Firefox- oder zur anderen Firefox- Instanze?


----------



## maki (5. Aug 2009)

> Was mich noch interessieren würde ist, wenn ich 2 Firefox- Instanzen öffne und es am Server nur eine Session für diese 2 Instanzen gibt, und die Kommunikation mit AJAX realisiert ist, wie wird das dann vom Browser oder vom Betriebssystem realisiert bzw. unterschieden, wo die Werte hingehören -> zur einen Firefox- oder zur anderen Firefox- Instanze?


Verstehe die Frage nicht... mit oder ohne AJAX, der Client (Browser) ruft den Server (Request), der Server antwortet (Response).


----------



## SlaterB (5. Aug 2009)

zwei Instanzen dürften unterschiedliche Ports haben oder irgendein Flag/ Sequencenumber wird im Request unterschiedlich sein und Firefox kann das dann auseinanderhalten


----------



## MQue (5. Aug 2009)

maki hat gesagt.:


> Verstehe die Frage nicht... mit oder ohne AJAX, der Client (Browser) ruft den Server (Request), der Server antwortet (Response).



Das ist klar, wenn ich aber 2 Browser offen habe, wer entscheidet ob die vom Server empfangenen Daten zu Browser 1 oder Browser 2 gehören?


----------



## maki (5. Aug 2009)

Michael1234 hat gesagt.:


> Das ist klar, wenn ich aber 2 Browser offen habe, wer entscheidet ob die vom Server empfangenen Daten zu Browser 1 oder Browser 2 gehören?


Muss er doch gar nicht, der Repsonse- "Kanal" wird ja mitgeliefert...


----------



## MQue (5. Aug 2009)

maki hat gesagt.:


> Muss er doch gar nicht, der Repsonse- "Kanal" wird ja mitgeliefert...



Das heißt dann, es gibt mehrere Response- Kanäle (je einen Kanal pro Browser- Instanz) zu einem (zum gleichen) Server aber nur ein Cookie pro Client/Rechner.

Sehe ich das richtig so?


----------



## MQue (5. Aug 2009)

Michael1234 hat gesagt.:


> Das heißt dann, es gibt mehrere Response- Kanäle (je einen Kanal pro Browser- Instanz) zu einem (zum gleichen) Server aber nur ein Cookie pro Client/Rechner.
> 
> Sehe ich das richtig so?




Das müsste ja dann auch heißen, dass wenn ich einem bei amazon eingeloggt bin und dann eine 2te Firefox- Instanz öffne, ich mich bei dieser 2ten Instanz nicht mehr einloggen muss (ist aber nicht so???)


----------



## maki (5. Aug 2009)

Michael1234 hat gesagt.:


> Das heißt dann, es gibt mehrere Response- Kanäle (je einen Kanal pro Browser- Instanz) zu einem (zum gleichen) Server aber nur ein Cookie pro Client/Rechner.
> 
> Sehe ich das richtig so?


Nein, pro Request ein Response.



> Das müsste ja dann auch heißen, dass wenn ich einem bei amazon eingeloggt bin und dann eine 2te Firefox- Instanz öffne, ich mich bei dieser 2ten Instanz nicht mehr einloggen muss (ist aber nicht so???)


Keine Ahnung wie du darauf kommst...


----------



## FArt (5. Aug 2009)

@Michael1234
Tipp
beschäftige dich mal damit: OSI-Modell ? Wikipedia


----------



## bronks (5. Aug 2009)

Michael1234 hat gesagt.:


> Das müsste ja dann auch heißen, dass wenn ich einem bei amazon eingeloggt bin und dann eine 2te Firefox- Instanz öffne, ich mich bei dieser 2ten Instanz nicht mehr einloggen muss (ist aber nicht so???)


Ob bei Amazon kann ich nicht sagen, da nicht kein Account, aber sonst ist es überall so und es geht mir kräftig auf den Geist, den MS hat beim MSIE etwas weiter gedacht und da besteht das Problem nicht.

Wozu ich das Brauche: Ich melde mich einmal als Chef und einmal als Gast an.


----------



## maki (5. Aug 2009)

> Ob bei Amazon kann ich nicht sagen, da nicht kein Account, aber sonst ist es überall so und es geht mir kräftig auf den Geist, den MS hat beim MSIE etwas weiter gedacht und da besteht das Problem nicht.


"weiter gedacht" ist der falsche Begriff, genaugenommen handelt es sich beim verhalten des IE um einen Bug, da die Tabs erst später "aufgesetzt" wurden(war nicht geplant), gab es keine Möglichkeit Daten zwischen den Tabs auszutauschen


----------



## SlaterB (5. Aug 2009)

Tabs ist jetzt etwas übertrieben (was man natürlich noch mehr als Rückständigkeit betrachten kann  )
es geht um mehrere Instanzen desselben Programmes, so ist das nämlich beim IE mangels Tabs üblich und zwar schon seit 10 Jahren


----------



## maki (5. Aug 2009)

SlaterB hat gesagt.:


> Tabs ist jetzt etwas übertrieben (was man natürlich noch mehr als Rückständigkeit betrachten kann  )
> es geht um mehrere Instanzen desselben Programmes, so ist das nämlich beim IE mangels Tabs üblich und zwar schon seit 10 Jahren


Trotzdem kann diese Verhalten mit CTRL+N ausgehebelt werden: Dann hat die neue Instanz die gleiche Session wie die alte


----------



## SlaterB (5. Aug 2009)

nicht allzu ernst: was heißt 'kann ausgehebelt werden', das ist hier doch gerade erwünscht,
oder anders formuliert: der IE kann anscheinend bewußt beides, Firefox nicht


----------

