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
1 changed files with 12 additions and 1 deletions

View File

@ -90,6 +90,17 @@ func (t *Transport) RoundTrip(req *Request) (*Response, error) {
headers.Call("append", key, value) 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) opt.Set("headers", headers)
if req.Body != nil { 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 ( var (
respCh = make(chan *Response, 1) respCh = make(chan *Response, 1)
errCh = make(chan error, 1) errCh = make(chan error, 1)