Jetzt war ich neugierig. Ich habe mein Programm etwas angepasst, da der Dienst doch auch die Möglichkeit bietet, beliebige URLs zu testen:
Liefert als Ausgabe vom Testserver:
Code:
https://httpbin.org/anything/hello world?param=hello%2520world
Das heißt: die Ressource wird korrekt codiert mit %20 und kommt daher auch korrekt beim Server an, nur der Parameter wird doppelt mit %2520 kodiert. Übrigens habe ich nach deinen Hinweisen noch mal etwas gegoogelt, weil mir das mit dem "+" nicht so klar war. Wenn ich das richtig verstehe, dann KANN man das "+" im
Query-Parameter nutzen, was zur einfachen Lesbarkeit dienen soll, man muss es aber nicht und kann weiterhin auch "%20" nutzen, weil das immer geht. So beim
W3C gelesen, die dann selber in Beispielen auch einen Parameter mit "%20" haben.
Für mich also folgende Erkenntnisse:
- Es ist alles nicht so dramatisch, wie ich im ersten Moment gedacht habe, als mein Programm direkt auf die Nase gefallen ist. Hier sollte ich an ein bis zwei Stellen wahrscheinlich auch mal im Code ran und das sauberer programmieren.
- Die doppelte Kodierung von Query-Parametern mit den Ergebnis "%2520" ist aber dennoch falsch, selbst wenn "?param=hello world" vielleicht nicht besonders schlau an der Stelle ist.
- Ich habe jetzt eine bessere Grundlage, um einen Eintrag fürs QP zu machen.
Ja, dass man den Parameter auch mit %20 codieren darf, kann sein. Das Umgekehrte mit dem + anstelle dem %20 in der
URL selber, ist aber definitiv verboten. Das + ist nur im
Query-Prameterwert zulässig. Was macht denn dein Testprogramm, wenn du das Property setzt, dass nicht zusätzlich codiert wird? Wenn du dann alles korrekt codiert übergibst, sollte es doch kein Problem geben, oder?