Wie funktioneren $SESSIONS eigentlich genau?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Wie funktioneren $SESSIONS eigentlich genau?

    Hi,

    im Prinzip ist mir klar wie $SESSIONS funktionieren. Mein Problem das ich gerade habe ist, dass ich eine App schreiben will, die per HHTP Requests einen Browser "simuliert". Also ich mache einen HTTP Request auf eine Login-Seite und dann wird auf dem Webserver ja eine $SESSION dafür angelegt. Bei jedem weiteren Aufruf einer Seite dieses Servers sollte ich nun "bekannt" sein und Zugriff haben. Wie aber behandle ich da die $SESSIONS richtig?

    Wo genau bekomme ich nach dem Login diese $SESSION ID? Das muss ja irgendwo im HTTP Header oder sowas sein oder wie? Und wie gebe ich dann bei jedem weiteren HTTP Request diese $SESSION ID wieder mit damit ich erkannt werde?

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Naja im Prinzip ganz einfach, du wirst mit deinem Rechner eindeutig identifiziert, dafür wird ne ID angelegt (SessionID) und inner Tabelle gespeichert, bei jedem Request wird einfach nur geschaut ob du das warst, wenn ja gibt die ID wenn nicht mach ne neue.
  • wolf_10de schrieb:

    Naja im Prinzip ganz einfach, du wirst mit deinem Rechner eindeutig identifiziert, dafür wird ne ID angelegt (SessionID) und inner Tabelle gespeichert, bei jedem Request wird einfach nur geschaut ob du das warst, wenn jagibt die ID wenn nicht mach ne neue.


    Und woher weis er das ich das bin?
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • wolf_10de schrieb:

    Ich denk dafür werden mehrere Dinge hinzu gezogen, IP / Browser / System/ usw...
    Ansonsten Cookies...


    Ne du verstehst mein roblem überhaupt nicht. Ich habe keinen Browser!

    Konkret: Die $SESSION ID muss irgendwie dem client mitgeteilt werden. Sonst könnte sie ja auch nicht in einem Cookie gespeichert werden oder? Wie also bekommt der Client die SESSION ID ?
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Genau, nach einem POST (oder wie auch immer dein Log-in läuft) bekommst Du vom Server wahrscheinlich ein Set-Cookie: Header. Alle Nachfolgenden Requests von Dir musst Du dann den Cookie mit einem Cookie: Header wieder spezifizieren. Vgl. en.wikipedia.org/wiki/HTTP_cookie#Setting_a_cookie

    Üblicherweise verwendet man Client-seitig ein Framework, was einem diese hässliche Arbeit abnimmt. Ich bau inzwischen HTTP Requests nicht mehr händisch zusammen, nervt ja nur ;)
    C++
  • Thallius schrieb:

    Konkret: Die $SESSION ID muss irgendwie dem client mitgeteilt werden.

    Der Server sendet über den Header Set-Cookie ein Token an den Client (z. B. Browser), z. B. so:

    Quellcode

    1. ​HTTP/1.1 200 OK
    2. Cache-Control: no-store, private, must-revalidate, proxy-revalidate, max-age=0, pre-check=0, post-check=0, no-cache
    3. ETag: "db2e4faefd241f7409fb14c1d2ab8d62"
    4. Expires: Thu, 04 Dec 2014 11:13:00 GMT
    5. Last-Modified: Fri, 05 Dec 2014 11:07:09 GMT
    6. X-XSS-Protection: 1; mode=block
    7. Content-Type: text/html;charset=UTF-8
    8. x-request-id: dd16a27d-e5af-4f39-8a66-40cf0ff631c9
    9. Pragma: no-cache
    10. x-frame-options: sameorigin
    11. Date: Fri, 05 Dec 2014 11:13:00 GMT
    12. Connection: keep-alive
    13. Set-Cookie: dssid2=51965080-8f93-42cb-bdfe-957235392caa; Domain=.apple.com; Expires=Sat, 05-Dec-2015 11:13:00 GMT; Path=/
    14. Set-Cookie: dssf=1; Domain=.apple.com; Expires=Sat, 05-Dec-2015 11:13:00 GMT; Path=/
    15. Set-Cookie: dc=nc; Domain=.store.apple.com; Expires=Fri, 05-Dec-2014 11:43:00 GMT; Path=/
    Alles anzeigen

    Der Browser merkt sich dieses Token und sendet es bei jeder neuen Anfrage über den Header Cookie an den Server zurück, solange bis es verfällt oder der Server es durch ein erneutes Set-Cookie überschreibt. Das ist alles, und du kannst es mit jedem Client (z. B. auch curl) verwenden. Foundation hat da natürlich einige nette Hlferlein: NSHTTPCookieStorage
    „Meine Komplikation hatte eine Komplikation.“