Go の http パッケージでは、文字列をクエリするために複数の http リクエストを行うのが一般的です。ただし、最終 URL からこれらの文字列を抽出することは、特にリダイレクトが発生した場合に困難になる可能性があります。残念ながら、Response オブジェクトにはこの最終 URL に関する情報がありません。
リダイレクト防止オプションが利用可能であるにもかかわらず、この記事ではリクエストが行われた後の URL の取得に焦点を当てています。これを実現するには:
コード スニペットの例を次に示します。
import ( "fmt" "log" "net/http" ) func main() { req, err := http.NewRequest("GET", "URL", nil) if err != nil { log.Fatal(err) } cl := http.Client{} var lastUrlQuery string cl.CheckRedirect = func(req *http.Request, via []*http.Request) error { if len(via) > 10 { return errors.New("too many redirects") } lastUrlQuery = req.URL.RequestURI() return nil } resp, err := cl.Do(req) if err != nil { log.Fatal(err) } fmt.Printf("last url query is %v\n", lastUrlQuery) }
このコードはリクエストをリダイレクトし、最終的な URL クエリを次の場所に保存します。 lastUrlQuery.
以上がGo で HTTP リダイレクト後に最終 URL を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。