Heim >Backend-Entwicklung >Golang >Wie kann ich die Integrität des HTTP-Anforderungskörpers beim Reverse-Proxying bewahren?
Problem:
In einem benutzerdefinierten HTTP-Handler, der die ServeHTTP-Methode implementiert, Die Überprüfung des Hauptteils eingehender POST-Anfragen mit req.ParseForm() führt zu einem Fehler, wenn die Anfrage an einen Reverse-Proxy weitergeleitet wird. Dies liegt daran, dass das Lesen des Körpers den req.Body.Reader-Stream leert und nichts für nachfolgende Verbraucher übrig bleibt.
Lösung:
Um den ursprünglichen Anforderungsstatus beizubehalten, während die untersucht wird Beachten Sie die folgende Technik:
Codebeispiel:
buf, _ := io.ReadAll(r.Body) rdr1 := io.NopCloser(bytes.NewBuffer(buf)) rdr2 := io.NopCloser(bytes.NewBuffer(buf)) doStuff(rdr1) r.Body = rdr2 // Resets the request body without consuming any data
Hinweis:
bytes.Buffer implementiert die io.ReadCloser-Schnittstelle aufgrund des Fehlens einer Close()-Methode nicht; daher ist jeder Leser in io.NopCloser.
eingeschlossenDas obige ist der detaillierte Inhalt vonWie kann ich die Integrität des HTTP-Anforderungskörpers beim Reverse-Proxying bewahren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!