Seite 1 von 1

Mit CGI Anfrage Header auslesen

Verfasst: 19.09.2020 11:47
von dige
Ich möchte eine Server Client Projekt mit PB/CGI und SB/Javascript aufbauen - also kein PHP verwenden.
Bei dem ich im Header (vom SpiderBasic Client) eine Session ID mitsende.
Das funktioniert bereits:

Code: Alles auswählen

! $.ajax({
  !   url: v_url,
  !   data: formData,
  !   headers: { 'SessionID' : v_yoursessionid },
  !   contentType: false,
  !   processData: false,
  !   method: 'POST',
  !   type: 'POST',
  !   success: function(response)           { v_callback(true,  v_filename, response) },
  !   error:   function(xhr, status, error) { v_callback(false, v_filename, xhr.statusText) },
  ! });
https://forums.spiderbasic.com/viewtopic.php?f=9&t=1929

Wie kann ich jetzt auf die Session ID im Header Serverseitig mit CGI zugreifen?
Mit CGIVariable("SessionID") geht es scheinbar nicht..

Kann jemand helfen?

Re: Mit CGI Anfrage Header auslesen

Verfasst: 19.09.2020 12:37
von NicTheQuick
Ich habe noch eine allgemeine Gegenfrage an dich: Warum möchtest du deinen eigenen Header dafür erfinden? Es sieht so aus als möchtest du einfach Cookies benutzen. Dafür gibt es bereits standardisierte Felder, durch die du nichts mehr neu erfinden musst. Es gibt ein Ablaufdatum, du kannst sie abhängig von der Domain machen, und der Browser schickt ein Cookie immer automatisch bei jedem Request zum Server bin, ohne dass du es manuell zum Request hinzufügen musst. Siehe z.B. GeeksForGeeks - HTTP headers | Set-Cookie

Re: Mit CGI Anfrage Header auslesen

Verfasst: 20.09.2020 00:49
von dige
Das mit den Cookies habe ich nicht hinbekommen :-/
Wenn ich auf der Webseite ein Cookie setze, sendet der Browser das nicht mit.

Ich kann mit GetCookie das Cookie mit SB/JavaScript lesen, aber es wird nicht beim
POST mitgesendet. Irgendwie mache ich was falsch.

Deshalb muss ich das selber implementieren..

Kann es sein, dass ein Cookie nur Serverseitig gesetzt werden kann?

Re: Mit CGI Anfrage Header auslesen

Verfasst: 20.09.2020 12:24
von NicTheQuick
dige hat geschrieben:Kann es sein, dass ein Cookie nur Serverseitig gesetzt werden kann?
Da bin ich mir gerade echt nicht sicher. Es sollte aber auch mit reinem Javascript gehen. In unseren Projekten auf der Arbeit macht das immer der Server. Denn nur der weiß ja welche SessionID sozusagen noch frei ist.
Cookies sind allerdings Domain-gebunden, wenn also deine Serveranfragen zu einem anderen Host gehen als die Anwendung läuft und du erzeugst das Cookie innerhalb des Sicherheitskontexts der Anwendung, dann wird das Cookie nicht an den Server gesendet. Das Problem kenne ich z.B. mit einem Angular-Frontend, das auf http://localhost:4200 läuft und einem Server-Backend, das auf https://example.com läuft. Da hast du zwei Probleme. Das eine ist http, das andere ist https. Und es sind unterschiedliche Domains und Ports. Im Server-Backend muss man dann z.B. diese Header setzen.
Apache-Syntax

Code: Alles auswählen

<IfModule mod_headers.c>
        SetEnvIf Origin "http(s)?://(localhost:4200)$" AccessControlAllowOrigin=$0
        Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
        Header set Access-Control-Allow-Credentials true
        Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, PUT"
        Header set Access-Control-Allow-Headers content-type
        Header add Access-Control-Allow-Headers authorization
</IfModule>