Seite 1 von 1

Frage zu PB_HTTP_Post

Verfasst: 24.03.2021 11:19
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?

Re: Frage zu PB_HTTP_Post

Verfasst: 24.03.2021 11:59
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.

Re: Frage zu PB_HTTP_Post

Verfasst: 24.03.2021 12:46
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..