diff --git a/http/cors.go b/http/cors.go index 3a458b203..eabd6ca7f 100644 --- a/http/cors.go +++ b/http/cors.go @@ -59,6 +59,10 @@ func (h *CORSHandler) addHeader(w http.ResponseWriter, origin string) { // ServeHTTP adds the correct CORS headers based on the origin and returns immediately // with a 200 OK if the method is OPTIONS. func (h *CORSHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { + // It is important to flush before leaving the goroutine. + // Or it may miss the latest info written. + defer w.(http.Flusher).Flush() + // Write CORS header. if h.Info.OriginAllowed("*") { h.addHeader(w, "*") @@ -72,7 +76,4 @@ func (h *CORSHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { } h.Handler.ServeHTTP(w, req) - - // Flush before leaving to send out all data. - w.(http.Flusher).Flush() }