1
0
mirror of https://github.com/golang/go synced 2024-11-22 03:34:40 -07:00

net/http: convert URL credentials to Authorization header for js fetch

This commit is contained in:
Luke Young 2022-11-04 00:59:00 -07:00
parent 90b40c0496
commit af7b54ceae

View File

@ -90,6 +90,17 @@ func (t *Transport) RoundTrip(req *Request) (*Response, error) {
headers.Call("append", key, value)
}
}
// If the URL has credentials, convert to an Authorization header
url := *req.URL
if url.User != nil {
url.User = nil
if req.Header.Get("Authorization") == "" {
username := url.User.Username()
password, _ := url.User.Password()
authorization := "Basic " + basicAuth(username, password)
headers.Call("append", "Authorization", authorization)
}
}
opt.Set("headers", headers)
if req.Body != nil {
@ -112,7 +123,7 @@ func (t *Transport) RoundTrip(req *Request) (*Response, error) {
}
}
fetchPromise := js.Global().Call("fetch", req.URL.String(), opt)
fetchPromise := js.Global().Call("fetch", url.String(), opt)
var (
respCh = make(chan *Response, 1)
errCh = make(chan error, 1)