Heim > Backend-Entwicklung > Golang > Warum leitet mein Go-Webserver POST-Anfragen an „/myurl' nach „/myurl/' um?

Warum leitet mein Go-Webserver POST-Anfragen an „/myurl' nach „/myurl/' um?

DDD
Freigeben: 2024-11-22 22:38:24
Original
775 Leute haben es durchsucht

Why Does My Go Web Server Redirect POST Requests to `/myurl` to `/myurl/`?

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:

  1. Leiten Sie den Browser mit dem abschließenden Schrägstrich „auf den richtigen Pfad“ /myurl/".
  2. Registrieren Sie den Handler nur für den spezifischen Pfad ohne den abschließenden Schrägstrich, z. B. http.HandleFunc("/myurl", PHandler).
  3. Registrieren Sie Handler für beide Pfade und ermöglichen Sie Anfragen mit und ohne abschließenden Schrägstrich.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage