Frage zu PB_HTTP_Post

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Frage zu PB_HTTP_Post

Beitrag von dige »

Hallo in die Runde,

ich nutze gern PB für Server/CGI und SpiderBasic für den WebClient.

Meine Frage: wie müssen die Parameter bei HTTPRequest(Type, URL$, Parameters, [..]) aufgebaut sein?
damit auf Servserseite diese mit CGIParameterValue() korrekt ausgelesen werden können?

Da ich SpiderBite verwende, habe ich bisher immer "0=Value1&1=Value2&3=Value3" usw. verwendet.

Das funktionierte auch immer bisher.

Da ich bei einem aktuellen Projekt den PayLoad aber etwas manipulaitionssicherer übertragen will,
wird ein Parameterinhalt zusätzlich mit Base64 encodiert.

Dadurch kann es passieren dass am Ende mehrere Gleichheitszeichen enthalten sein können:

"0=CGI_StoreValue&1=eyJHYW1dmMjcifQ=="

Damit kann CGIParameterValue() aber nicht umgehen:

CGIParameterValue(0) = "CGI_StoreValue"
CGIParameterValue(1) = ""

Muss man = Zeichen maskieren? URLEncoder () hilft da aber auch nicht..

Hat jemand eine Idee?
"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: Frage zu PB_HTTP_Post

Beitrag von NicTheQuick »

Versuch es mal mit den beiden Parametern #PB_Cipher_URL und #PB_Cipher_NoPadding.

Code: Alles auswählen

*test = UTF8("Dies ist ein Test.")
size.i = MemorySize(*test)
base64.s = Base64Encoder(*test, size, #PB_Cipher_URL | #PB_Cipher_NoPadding)

Debug base64

*out = AllocateMemory(size)
Base64Decoder(base64, *out, size)

Debug PeekS(*out, -1, #PB_UTF8)
Oder wandle alternativ die = mit einem ReplaceString in das escapte URL-Äquivalent um.
Bild
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: Frage zu PB_HTTP_Post

Beitrag von dige »

Hi Nick,

ich verwende Clientseitig zum Codieren Javascript, da es bei SpiderBasic keine Base64 Codierfunktion gibt:

Code: Alles auswählen

 !  return btoa(encodeURIComponent(v_input).replace(/%([0-9A-F]{2})/g,
  !    function toSolidBytes(match, p1) {
  !      return String.fromCharCode('0x' + p1);
  !  }));
Ich werde wohl eine Maskierung der = Zeichen verwenden müssen..
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Antworten