old row : req.Header = make(Header)

new row : req.Header = ireq.Header

在 2012年3月31日星期六UTC+8下午8时44分13秒,[email protected]写道:
Hi again,
I'm quite stressing the net/http package ;)

I have discovered that if I set a custom HTTP header to a request, and
hit a 301/302/etc. redirect, those headers are not kept. Example code:

package main
import (
func main() {
client := &http.Client{}

req, err := http.NewRequest("GET", "http://combo.cc/redirect", nil)
if err != nil {

req.Header.Set("User-Agent", "MSIE 5.15 (MacintoshOS 9)")
log.Println("User-Agent before redirect:", req.UserAgent())

resp, err := client.Do(req)
if err != nil {
defer resp.Body.Close()

log.Println("User-Agent after redirect:", resp.Request.UserAgent())


2012/03/31 14:43:02 User-Agent before redirect: MSIE 5.15 (MacintoshOS 9)
2012/03/31 14:43:02 User-Agent after redirect:

This is what I'm getting on my nginx access.log: - - [31/Mar/2012:14:36:59 +0200] "GET /redirect HTTP/1.1"
301 185 "-" "MSIE 5.15 (MacintoshOS 9)" - - [31/Mar/2012:14:36:59 +0200] "GET / HTTP/1.1" 200 798 "
http://combo.cc/redirect" "Go http package"

As you can see the first request had my custom header, the second one
did not.

In http://golang.org/src/pkg/net/http/client.go, line 204, upon
redirect a new set of headers is being constructed, and only "Referer" is
set, instread of copying the headers from the original request.

If this looks like a bug to you, I'll open a report.

You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupgolang-nuts @
postedNov 9, '13 at 2:43p
activeNov 9, '13 at 2:43p

1 user in discussion

Xingyuanboy8: 1 post



site design / logo © 2023 Grokbase