mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-13 22:51:08 -05:00
FastCGI: Explicitly set Content-Length #626
This commit is contained in:
parent
05957b4965
commit
ef5f9c771d
1 changed files with 10 additions and 1 deletions
11
middleware/fastcgi/fastcgi.go
Executable file → Normal file
11
middleware/fastcgi/fastcgi.go
Executable file → Normal file
|
@ -4,6 +4,7 @@
|
|||
package fastcgi
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io"
|
||||
"net/http"
|
||||
|
@ -105,13 +106,21 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error)
|
|||
return http.StatusBadGateway, err
|
||||
}
|
||||
|
||||
// Write the response body to a buffer
|
||||
// To explicitly set Content-Length
|
||||
// For FastCGI app that don't set it
|
||||
var buf bytes.Buffer
|
||||
io.Copy(&buf, resp.Body)
|
||||
if r.Header.Get("Content-Length") == "" {
|
||||
w.Header().Set("Content-Length", strconv.Itoa(buf.Len()))
|
||||
}
|
||||
writeHeader(w, resp)
|
||||
|
||||
// Write the response body
|
||||
// TODO: If this has an error, the response will already be
|
||||
// partly written. We should copy out of resp.Body into a buffer
|
||||
// first, then write it to the response...
|
||||
_, err = io.Copy(w, resp.Body)
|
||||
_, err = io.Copy(w, &buf)
|
||||
if err != nil {
|
||||
return http.StatusBadGateway, err
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue