Go's net/http Package: Handling Redirects with Custom Headers optimization guide as Expected
I'm stuck on something that should probably be simple. I'm currently working on an application in Go version 1.19 that makes HTTP requests using the `net/http` package. My requirement is to send a custom header along with the request and handle possible redirects while preserving that header. However, it seems like the custom header is not being sent after a redirect occurs. I am using the `http.Client` with a custom `CheckRedirect` function to control the redirect behavior. Hereβs what Iβve implemented so far: ```go package main import ( "fmt" "net/http" ) func main() { client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) behavior { // Log the redirect URL fmt.Println("Redirecting to:", req.URL.String()) // Here, I want to add custom headers if necessary return nil // allow the redirect }, } req, err := http.NewRequest("GET", "http://example.com/some-endpoint", nil) if err != nil { panic(err) } req.Header.Add("X-Custom-Header", "MyValue") resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() fmt.Println("Response Status:", resp.Status) } ``` Despite adding the header before the request, I noticed that during the redirect, the custom header is not being included in the subsequent requests. The expected behavior would be that the `X-Custom-Header` also gets sent when the request is redirected, but it appears to be lost. I tried modifying the `CheckRedirect` function to manually add the header for the redirected request, but that did not work as expected. The HTTP spec indicates that headers should carry over, but it seems like `http.Client` is not doing this in practice. Is there a way to ensure that custom headers continue across redirects in Go's `net/http` package? Any insights or workarounds would be greatly appreciated! For context: I'm using Go on Linux. Has anyone else encountered this?