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?
Frage zu PB_HTTP_Post
Frage zu PB_HTTP_Post
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- 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
Versuch es mal mit den beiden Parametern #PB_Cipher_URL und #PB_Cipher_NoPadding.
Oder wandle alternativ die = mit einem ReplaceString in das escapte URL-Äquivalent um.
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)
Re: Frage zu PB_HTTP_Post
Hi Nick,
ich verwende Clientseitig zum Codieren Javascript, da es bei SpiderBasic keine Base64 Codierfunktion gibt:
Ich werde wohl eine Maskierung der = Zeichen verwenden müssen..
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);
! }));
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."