Подтвердить что ты не робот

Базовый HTTP-аут в Go

Я пытаюсь выполнить базовую HTTP-аутентификацию с помощью приведенного ниже кода, но он выдает следующую ошибку:

2013/05/21 10:22:58 Получите mydomain.com: неподдерживаемая схема протокола "" статус выхода 1

func basicAuth() string {
    var username string = "foo"
    var passwd string = "bar"
    client := &http.Client{}
    req, err := http.NewRequest("GET", "mydomain.com", nil)
    req.SetBasicAuth(username, passwd)
    resp, err := client.Do(req)
    if err != nil{
        log.Fatal(err)
    }
    bodyText, err := ioutil.ReadAll(resp.Body)
    s := string(bodyText)
    return s
}

Есть идеи, что я могу делать не так?

4b9b3361

Ответ 1

Вам нужно указать протокол для NewRequest, например. "http://", см. здесь.

req, err := http.NewRequest("GET", "http://mydomain.com", nil)

Ответ 2

потенциальный "gotcha" - это если ваш сайт делает какие-либо переадресации... Go-lang выведет ваши указанные заголовки на перенаправления. (Мне нужно было сделать wirehark, чтобы это увидеть! Вы можете быстро узнать в хроме, щелкнув правой кнопкой мыши, затем "проверить элемент" и щелкнуть вкладку сети)

вы хотите определить функцию перенаправления, которая добавляет заголовок обратно.

func basicAuth(username, password string) string {
  auth := username + ":" + password
   return base64.StdEncoding.EncodeToString([]byte(auth))
}

func redirectPolicyFunc(req *http.Request, via []*http.Request) error{
 req.Header.Add("Authorization","Basic " + basicAuth("username1","password123"))
 return nil
}

func main() {

  client := &http.Client{
    Jar: cookieJar,
    CheckRedirect: redirectPolicyFunc,
}

req, err := http.NewRequest("GET", "http://localhost/", nil)
    req.Header.Add("Authorization","Basic " + basicAuth("username1","password123"))

    resp, err := client.Do(req)
}