Anmelden

View Full Version : Path Parameter im IWS darf keinen Slash "/" enthalten



Seiten : 1 [2]

dschroeder
02-11-23, 10:06
Vielleicht geht noch ...%252F... oder ...%2561... im Pfad?

Das sieht gar nicht so schlecht aus: Wenn ich %252F übergebe, geht kommt die Zeichenkette %2F in meinem RPG-Programm an. Das müsste dann noch unescaped werden.
Wenn ich das richtig verstehe, escapest du damit das Prozentzeichen.

Es ist etwas merkwürdig, dass die Java-Anwendung, die meinen Webservice nutzt, nicht diese Art des Escapings benutzt. Die Java Kollegen werden ja normalerweise irgendwelche Standard-Escapes benutzten.

Vielen Dank für deine Lösung!

Ich habe mein Programm allerdings schon auf Query-Parameter umgebaut.
Aber ich behalte es mal im Hinterkopf für das nächste Mal.

LG, Dieter

Andreas_Prouza
02-11-23, 10:22
Es ist etwas merkwürdig, dass die Java-Anwendung, die meinen Webservice nutzt, nicht diese Art des Escapings benutzt. Die Java Kollegen werden ja normalerweise irgendwelche Standard-Escapes benutzten.

Das ist eben kein Standard-Escape. Standard würde bedeuten, dass du sowohl Cleint- als auch Server-Seitig nichts machen musst, da dass die Framworks automatisch übersetzen.

Die beschriebene Lösung ist am Ende nichts anderes als das was Baldur zuvor geschrieben hat, dass du ein Ersatzzeichen verwendest, dass du dann am Server ja wieder manuell zurück wandeln musst.
Es ist halt so, dass ein / nicht als Wert in der URL übergeben werden darf. Hierfür würde ich ebenfalls den Weg über den Query-Parameter oder POST gehen.

Fuerchau
02-11-23, 10:48
Auch in Java sollte es Funktionen wie Url.Encode(), Url.Decode() geben, die eben einen Web-Url automtisch umwandeln. Beim Encode automatisch alles was als Web-Adresse erscheinen könnte in %xx, beim Decode dann entsprechend zurück.
Manuell ist das deshalb erforderlich, da jedes Element explizit encoded werden muss.

Z.B. www.mywebapi.de/function?p1=bala/bala&p2=blabla

Machst du einen Encode über alles werden /.?=& alle in %xx gewandelt, was dann keine Url ergibt.
Du benötigs also einen Encode nur für "bala/bala".
Ich habe mir das angewöhnt für alle Parameterwerte einen Encode aufzurufen.

Leider wird das nicht automtisch gemacht sondern der Absender muss es aktiv tun, der Web-Server muss es ebenso tun. Wobei in .Net eine Lib-Funktion zum Trennen der Url von den Query-Parametern und Splitten in Key-Value-Pairs vorhanden ist.