Mit CGI Anfrage Header auslesen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Mit CGI Anfrage Header auslesen

Beitrag 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?
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Mit CGI Anfrage Header auslesen

Beitrag 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
Bild
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: Mit CGI Anfrage Header auslesen

Beitrag 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?
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Mit CGI Anfrage Header auslesen

Beitrag 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>
Bild
Antworten