Sven Rautenberg: Session Cookies aus/an selektiv wählen?

Hallo, Forum!

Ich muß mich gezwungenermaßen gerade mit ASP auseinandersetzen (was ansonsten nicht wirklich die Programmiersprache meiner Wahl ist).

Auf einer Site sind viele HTML-Dateien enthalten, sowie ein paar ASP-Skripte. Durch die Serverkonfiguration wurde bislang bei jedem Aufruf eines ASP-Skriptes eine Session gestartet, d.h. ein Cookie gesetzt. Sowas nervt mich aber (und ich halte es auch nicht für sonderlich kundenfreundlich, gleich mit dem potentiellen Usertracking ins Haus zu fallen: Die Startseite ist nämlich ein ASP-Skript, welches die bevorzugte Benutzersprache auswertet und entsprechend weiterleitet), also habe ich nachgefragt, ob man diese Cookies nicht ausschalten kann.

Ergebnis: Man kann die Sessions ausschalten, entweder komplett für den ganzen Server oder selektiv pro Skript.

Das Problem:

1. Wenn man selektiv pro Skript die Sessions ausschaltet mit <%@ EnableSessionState=False %>, dann wird dennoch ein Cookie gesendet (sagt zumindest die Knowledge Base).

2. Wenn man Sessions für den ganzen Server deaktiviert, kann man sie nicht in einzelnen Skripten wieder aktivieren, was ich aber müßte, weil ein existierender geschützter Bereich damit arbeitet (sagt jedenfalls der Server-Admin).

Ich bin eigentlich ziemlich enttäuscht von ASP, dass es solch simple Dinge, die in PHP locker und ohne große Probleme mit einem selektiv eingebauten session_start() funktionieren, nicht gebacken kriegt.

Frage:
Gibts da wirklich keine Möglichkeit? Ich habe keine Lust, den geschützten Bereich mit ASP.Net und der Einstellung "Cookieless" (wie vom Admin vorgeschlagen) umzuentwickeln - geschweige denn dass ich davon Ahnung hätte.

Sachdienliche Hinweise werden mit Jubelschreien nicht unter 20 Dezibel belohnt.

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.
  1. Moin!

    Frage:
    Gibts da wirklich keine Möglichkeit? Ich habe keine Lust, den geschützten Bereich mit ASP.Net und der Einstellung "Cookieless" (wie vom Admin vorgeschlagen) umzuentwickeln - geschweige denn dass ich davon Ahnung hätte.

    Sachdienliche Hinweise werden mit Jubelschreien nicht unter 20 Dezibel belohnt.

    Ich habe noch einen Knowledge-Base-Artikel gefunden: http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q184574

    Dort wird erwähnt, dass ASP die Cookies vorsorglich setzt, damit sie in jedem Falle zur Verfügung stehen, sollte im ASP-Skript mit Sessions gearbeitet werden. Dieser Mechanismus wird _nicht_ verwendet, wenn Seiten-Pufferung eingeschaltet wird, weil dort nachträglich noch Header hinzugefügt werden können (vgl. "Note 1").

    Hm, ich schätze, ich muß noch weiter experimentieren.

    - Sven Rautenberg

    --
    Diese Signatur gilt nur am Freitag.
  2. Hi Sven

    Ich muß mich gezwungenermaßen gerade mit ASP auseinandersetzen (was ansonsten nicht wirklich die Programmiersprache meiner Wahl ist).

    Haha, jetzt darf ich dich mal korrigieren: ASP ist nämlich gar keine Programmiersprache, sondern eine server-seitige Technik. ;-)

    Die Startseite ist nämlich ein ASP-Skript, welches die bevorzugte Benutzersprache auswertet und entsprechend weiterleitet), also habe ich nachgefragt, ob man diese Cookies nicht ausschalten kann.

    Hm, wenn du keine Cookies setzen willst, dann würde ich einfach keine Session-Variablen benutzen. Du kannst ja die Parameterübergabe per URI verwenden.

    MfG & HtH

    Tom2

    --
    "Experience is something you don't get until just after you need it."
     by Steven Wright
    1. Moin!

      Ich muß mich gezwungenermaßen gerade mit ASP auseinandersetzen (was ansonsten nicht wirklich die Programmiersprache meiner Wahl ist).
      Haha, jetzt darf ich dich mal korrigieren: ASP ist nämlich gar keine Programmiersprache, sondern eine server-seitige Technik. ;-)

      Du wirst demnächst sicher noch ganz häufig Gelegenheit haben, mich im Zusammenhang mit ASP zu korrigieren.

      Die Startseite ist nämlich ein ASP-Skript, welches die bevorzugte Benutzersprache auswertet und entsprechend weiterleitet), also habe ich nachgefragt, ob man diese Cookies nicht ausschalten kann.
      Hm, wenn du keine Cookies setzen willst, dann würde ich einfach keine Session-Variablen benutzen. Du kannst ja die Parameterübergabe per URI verwenden.

      Der Code, der von mir ist, verwendet keine Session-Variablen. Der Code, dem ich nur einen neuen HTML-Anzug verpassen will, schon. Und ich habe kein Interesse, dort alles neu zu machen. Von ASP ist in meinen Augen nur eines zu halten: Abstand. Also tendiere ich dazu, möglichst wenig Programmierarbeit da rein zu stecken, wenn es sich vermeiden läßt. :)

      - Sven Rautenberg

      --
      Diese Signatur gilt nur am Freitag.
      1. Hi Sven

        Du wirst demnächst sicher noch ganz häufig Gelegenheit haben, mich im Zusammenhang mit ASP zu korrigieren.

        Naja, so gut bin ich nun auch wieder nicht.

        Der Code, der von mir ist, verwendet keine Session-Variablen. Der Code, dem ich nur einen neuen HTML-Anzug verpassen will, schon. Und ich habe kein Interesse, dort alles neu zu machen.

        Du musst ja nicht alles neu machen. Es werden kaum sehr viele Session-Variablen verwendet, so dass sich der Aufwand in Grenzen halten wird. Wofür werden die Session-Variablen denn genau verwendet? Sessionen einfach ausschalten kannst du IMHO nicht, das wäre ja etwa wie wenn du in einem Programm, dass in einer richtigen Programmiersprache wie C geschrieben ist, eifach die Definitionen der globalen Variablen löschen würdest. So stell ich mir das zumindest vor.

        Von ASP ist in meinen Augen nur eines zu halten: Abstand.

        Hoho, das war ein Tiefschlag *aufschreigetroffenegegendmithändenschützundzusammenbrech*. ;-) Ein bisschen mehr Toleranz und Intresse für andere Technologien hätte ich schon erwartet. Für's Internet ist ASP sicherlich nicht die beste Technik, in einem homogenen Intranet soll man damit aber schon sehr interessante Sachen machen können (auch wenn ich noch nicht weiss, wie das geht).

        Ich vermute mal, dass es VBScript ist, dass dich vor allem stört. Du kannst jedoch auch JScript, und mit Hilfe von Zusatz-Wasweissichwas auch sehr viele andere Sprachen verwenden. Schau's dir doch mal an, wenn du Lust hast.

        MfG

        Tom2

        --
        "Experience is something you don't get until just after you need it."
         by Steven Wright
  3. Hallo Sven Rautenberg

    1. Wenn man selektiv pro Skript die Sessions ausschaltet mit <%@ EnableSessionState=False %>, dann wird dennoch ein Cookie gesendet (sagt zumindest die Knowledge Base).

    Falsch! Du muss den Befehl zwar auf jede Seite setzen, aber dann bist du das Cookieproblem quit!
    Alternativ könntest du es auch im IIS im "Dialog Servereigenschaften" ganz ausschalten, würde ich aber von absehen, weil die sessionvars schon auch positive aspekte haben.
    Gruß Burkhard

    1. Hallo Burkhard

      1. Wenn man selektiv pro Skript die Sessions ausschaltet mit <%@ EnableSessionState=False %>, dann wird dennoch ein Cookie gesendet (sagt zumindest die Knowledge Base).

      Falsch! Du muss den Befehl zwar auf jede Seite setzen, aber dann bist du das Cookieproblem quit!

      Seltsam: Ich hab das mal auf meiner Seite, die keine Session-Variablen bennötigt, ausprobiert und Mozilla hat mich trotzdem mehrmals gefragt, ob ich den Cookie annehmen will. Weisst du, woher das kommt?

      MfG

      Tom2

      --
      "Experience is something you don't get until just after you need it."
       by Steven Wright
      1. Moin!

        1. Wenn man selektiv pro Skript die Sessions ausschaltet mit <%@ EnableSessionState=False %>, dann wird dennoch ein Cookie gesendet (sagt zumindest die Knowledge Base).

        Falsch! Du muss den Befehl zwar auf jede Seite setzen, aber dann bist du das Cookieproblem quit!

        Seltsam: Ich hab das mal auf meiner Seite, die keine Session-Variablen bennötigt, ausprobiert und Mozilla hat mich trotzdem mehrmals gefragt, ob ich den Cookie annehmen will. Weisst du, woher das kommt?

        Das könnte dann noch mit der Seitenausgabe zusammenhängen - gepuffert oder ungepuffert. Bei letzterem wird das Session-Cookie vorsorglich schon mal gesetzt, bevor das ASP-Skript zum Zuge kommt (und dort EnableSessionState greifen kann), bei gepufferter Ausgabe kann ASP das gesetzte Cookie nachträglich wieder entfernen bzw. es erst nachträglich setzen - die komplette Seite befindet sich ja noch im Speicher und kann verändert werden. PHP kennt übrigens einen ähnlichen Mechanismus, mit dem man u.a. auch nachträglich header() setzen kann.

        Ich schätze, ich werden einfach ein wenig rumtesten müssen.

        - Sven Rautenberg

        --
        Diese Signatur gilt nur am Freitag.
        1. Moin!

          hallöchen

          PHP kennt übrigens einen ähnlichen Mechanismus, mit dem man u.a. auch nachträglich header() setzen kann.

          nur Interessehalber: Wie sieht dieser aus ? bzw. was muss macn dazu machen?
          danke vielmals

          PS: Irgendwie verleitet mich Deine Signatur immer zum schmunzeln, selbst nach häufigerem Ansehen! Ich find die richtig niedlich *g*

          ciao

          --
          DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
          ->Alles ist gut wenn es aus Schokolade ist
          1. Moin!

            PHP kennt übrigens einen ähnlichen Mechanismus, mit dem man u.a. auch nachträglich header() setzen kann.
            nur Interessehalber: Wie sieht dieser aus ? bzw. was muss macn dazu machen?

            Du kannst in PHP "Output Control Functions" benutzen: http://www.php.net/manual/en/ref.outcontrol.php

            Auf der verlinkten Seite ist gleich ein Beispiel, wie man Cookies noch _nach_ einer Ausgabe mit echo setzen kann (was normal nicht geht).

            Irgendwo dort sind auch Beispiele, in denen fast eine komplette Seite schon in den Puffer geschrieben wird, dann aber aufgrund eines abzufangenden Fehlers dieser Puffer gelöscht und nur eine Fehlermeldung geschrieben wird.

            PS: Irgendwie verleitet mich Deine Signatur immer zum schmunzeln, selbst nach häufigerem Ansehen! Ich find die richtig niedlich *g*

            Und bei deiner kriege ich immer Appetit. ;)

            - Sven Rautenberg

            --
            Diese Signatur gilt nur am Freitag.
            1. Moin!

              Na gut geschlafen, ;)

              Du kannst in PHP "Output Control Functions" benutzen: http://www.php.net/manual/en/ref.outcontrol.php

              danke

              Und bei deiner kriege ich immer Appetit. ;)

              bei Deiner erst! ;)

              • Sven Rautenberg

              einen ganz lieben Gruss
              Romy

              --
              DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
              ->Alles ist gut wenn es aus Schokolade ist
      2. Seltsam: Ich hab das mal auf meiner Seite, die keine Session-Variablen bennötigt, ausprobiert und Mozilla hat mich trotzdem mehrmals gefragt, ob ich den Cookie annehmen will. Weisst du, woher das kommt?

        Hey Tom2,
        nee, weiß ich nicht, aber ich war bis gerade der Meinung, das ich das zu ende erforscht habe, und ich kann machen was ich will, mich fragt nach <%@ EnableSessionState=False %> weder IE 4-6 noch NS 4-7 auf win und Mac! Zusätzlich ist auch Jörg Krause(Buchautor) dieser Meinung. Was denn wenn es mit der IIS version zu tun hat?
        Sollte ich wirklich falsch liegen, dann SORRY!
        Gruß Burkhard

        1. Moin!

          Seltsam: Ich hab das mal auf meiner Seite, die keine Session-Variablen bennötigt, ausprobiert und Mozilla hat mich trotzdem mehrmals gefragt, ob ich den Cookie annehmen will. Weisst du, woher das kommt?

          nee, weiß ich nicht, aber ich war bis gerade der Meinung, das ich das zu ende erforscht habe, und ich kann machen was ich will, mich fragt nach <%@ EnableSessionState=False %> weder IE 4-6 noch NS 4-7 auf win und Mac! Zusätzlich ist auch Jörg Krause(Buchautor) dieser Meinung. Was denn wenn es mit der IIS version zu tun hat?
          Sollte ich wirklich falsch liegen, dann SORRY!

          Nein, du liegst nicht falsch. Hab's gerade ausprobiert, und es funktioniert so.

          Zur Sicherheit hatte ich noch Response.Buffer=true eingebaut, aber es geht auch ohne. Scheinbar läuft bei ASP doch nicht alles so linear ab, oder es wird standardmäßig bei meinem Server gepuffert (ich bin nicht der Admin, ich weiß das nicht). Außerdem ist einigermaßen egal, wo das EnableSessionState im Quellcode steht - ich hab einige Kilobyte HTML-Code davor, und es geht dennoch (ist allerdings der erste ASP-Befehl in der Datei).

          Danke erstmal.

          - Sven Rautenberg

          --
          Diese Signatur gilt nur am Freitag.