Go-Webserver: Mysteriöse Weiterleitung bei POST-Anfragen
Beim Senden von POST-Anfragen an eine bestimmte URL (/myurl) stoßen Entwickler auf etwas Unerwartetes Verhalten: Die Anfrage erreicht den Server nicht direkt. Stattdessen wird eine 301-Umleitungsantwort empfangen, gefolgt von einer sekundären GET-Anfrage, die vom Server verarbeitet wird.
Bei der Untersuchung des Servercodes scheint es, dass über ein Handler für den Pfad „/myurl/“ registriert ist http.HandleFunc("/myurl/", PHandler). Wenn der Browser jedoch die POST-Anfrage stellt, leitet er an „/myurl“ weiter (ohne den abschließenden Schrägstrich).
Der Schlüssel zum Verständnis dieses Problems liegt im Standardverhalten des http-Pakets in Go. Laut Dokumentation für den Typ http.ServeMux löst ein abschließender Schrägstrich im registrierten Pfad eine Umleitung aus, wenn die Anfrage ohne den abschließenden Schrägstrich eintrifft. Dadurch soll sichergestellt werden, dass Anfragen an den entsprechenden Handler weitergeleitet werden.
Da der Handler in diesem Fall für „/myurl/“ registriert ist, führt die Anfrage des Browsers an „/myurl“ ohne den abschließenden Schrägstrich zu eine Weiterleitung zu „/myurl/“ mit dem abschließenden Schrägstrich. Dies erklärt die Beobachtung, dass die Anfrage nie direkt den Server erreicht.
Um dieses Problem zu beheben, haben Entwickler mehrere Möglichkeiten:
Durch die Implementierung einer dieser Lösungen können Entwickler das unerwartete Weiterleitungsverhalten beseitigen und sicherstellen dass POST-Anfragen wie erwartet von ihrem Go-Webserver verarbeitet werden.
Das obige ist der detaillierte Inhalt vonWarum leitet mein Go-Webserver POST-Anfragen an „/myurl' nach „/myurl/' um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!