diff options
author | Ivan Krasin <krasin@golang.org> | 2009-12-15 16:27:45 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-12-15 16:27:45 -0800 |
commit | 8e2608eca8960819791eb4d89b3028e26a29498d (patch) | |
tree | 4e21728080dd0c38b86140722fcb0baf4182c4d0 | |
parent | 5d754bfaea484c7b6673019c8c7f2811749cda41 (diff) | |
download | go-8e2608eca8960819791eb4d89b3028e26a29498d.tar.gz go-8e2608eca8960819791eb4d89b3028e26a29498d.zip |
Add basic http authentication support.
Fixes #407.
R=rsc, ajstarks
CC=ushakov
https://golang.org/cl/176076
-rw-r--r-- | src/pkg/http/client.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/pkg/http/client.go b/src/pkg/http/client.go index aa3d3be6dc..af11a4b745 100644 --- a/src/pkg/http/client.go +++ b/src/pkg/http/client.go @@ -8,6 +8,7 @@ package http import ( "bufio" + "encoding/base64" "fmt" "io" "net" @@ -118,6 +119,16 @@ func send(req *Request) (resp *Response, err os.Error) { if !hasPort(addr) { addr += ":http" } + info := req.URL.Userinfo + if len(info) > 0 { + enc := base64.URLEncoding + encoded := make([]byte, enc.EncodedLen(len(info))) + enc.Encode(encoded, strings.Bytes(info)) + if req.Header == nil { + req.Header = make(map[string]string) + } + req.Header["Authorization"] = "Basic " + string(encoded) + } conn, err := net.Dial("tcp", "", addr) if err != nil { return nil, err |