aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Krasin <krasin@golang.org>2009-12-15 16:27:45 -0800
committerRuss Cox <rsc@golang.org>2009-12-15 16:27:45 -0800
commit8e2608eca8960819791eb4d89b3028e26a29498d (patch)
tree4e21728080dd0c38b86140722fcb0baf4182c4d0
parent5d754bfaea484c7b6673019c8c7f2811749cda41 (diff)
downloadgo-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.go11
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