http thunks antworten von a go server
In diesem Szenario wollen wir einen Go-Http-Server erstellen, der eine HTTP-Antwort mit dem Transfer-Cododing-Set sendet. Der Server beabsichtigt, Teile in Intervallen von ein Sekunde zu schreiben, sodass der Client diese auf Bedarf empfangen kann. Die aktuelle Implementierung steht jedoch vor Herausforderungen:
Lösung
, um die Probleme zu beheben:
func HandlePost(w http.ResponseWriter, r *http.Request) { w.Header().Set("Connection", "Keep-Alive") w.Header().Set("Transfer-Encoding", "chunked") w.Header().Set("X-Content-Type-Options", "nosniff") ticker := time.NewTicker(time.Second) go func() { for t := range ticker.C { io.WriteString(w, "Chunk") fmt.Println("Tick at", t) } }() time.Sleep(time.Second * 5) ticker.Stop() fmt.Println("Finished: should return Content-Length: 0 here") w.Header().Set("Content-Length", "0") }
Der Übertragungs-kodierende Header wird automatisch vom Http-Schriftsteller verwaltet. Es ist also unnötig, sie ausdrücklich zu setzen. "fmt" "io" "Protokoll" "net/http" "Zeit" ) func main () { http.handlefunc ("/", func (w http.responsewriter, r *http.request) { Flusher, OK: = w. (http.flusher) If! OK { Panik ("erwartete http.responsewriter als http.flusher") } W.Header (). Set ("X-In-In-In-In-In-in-Typ-Optionen", "Nosniff") für i: = 1; i
verifikation
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3