Hello,
Warum nicht? Wenn Parameter im QueryString Schreibaktionen auslösen, dann ist das so und da hat sich der Enwickler bestimmt was dabei gedacht. Stell Dir vor, Du hast eine Tabelle im Browser und für jede Zeile gibt es eine Löschoption. Soll denn da für jede Zeile ein Formular+Submit-Button in den Browser gerendert werden nur, damit das Löschen eine POST-Aktion wird?
Ein Formular reicht dafür.
Und außerdem ist die Version per GET auch doppelt gefährlich: Ein GET-Request kann bestimmungsgemäß an beliebigen Stellen zwischengespeichert werden (als Log-Eintrag, als Favorit, in eMails, etc.). Wenn man nun nicht sicherstellt, dass IDs nur EINMAL-IDs sind, also nach dem Löschen nicht wiederbelegt werden können, könnte ein anderer User mit Löschrechten versehentlich diesen Link klicken und ungewollt falsche Daten löschen.
Beliebige weitere Szenarien hierzu sind denkbar.
Dass es besondere Techniken für derartige Aktionen gibt (Session mit Rechteprüfung auf Select, speichern, Request zum Löschen mit Gegenprüfung, Zeitfenstersperre. Was nicht vorher angezeigt werden konnte, darf auch nicht gelöscht werden), das wird bei der Simpel-Lösung mit GET oft vergessen. Da wird es dann eben einfach so gemacht, wie Du beschrieben hast: frei nach dem Motto "Wieso, funktioniert doch?".
Liebe Grüße
Tom S.
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.