Daniele B
Daniele B

Reputation: 20412

Golang: how to make http client not following redirects?

I would like to make an http call using an http client with these characteristics:

Hence, I am looking for a solution with http.Client rather than with trasport.RoundTrip

how can I do that?

Upvotes: 1

Views: 4434

Answers (2)

alsotang
alsotang

Reputation: 1605

    client := &http.Client{
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }

According to https://pkg.go.dev/net/http#Client.CheckRedirect

Upvotes: 1

syscll
syscll

Reputation: 1031

If you use a http.Client, you have the option of using the CheckRedirect field.

This field takes a custom function which can then handle any redirects if an error is received by the initial request.

A simple example might be something like this:

client: &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return errors.New("something bad happened") // or maybe the error from the request
    },
}

You could also return the http.ErrUseLastResponse error which returns the most recent response with its body unclosed.

Upvotes: 11

Related Questions