📌  相关文章
📜  golang http 停止重定向 - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:31:00.968000             🧑  作者: Mango

Golang HTTP 停止重定向

在 Golang 中使用 HTTP 请求时,可能会遇到重定向的情况。默认情况下,Golang 的 HTTP 客户端会自动处理重定向。但是,有些情况下,我们可能需要停止重定向并手动处理。本文将介绍如何在 Golang 中停止 HTTP 请求的自动重定向。

代码实现

在 Golang 中,可以通过创建自定义的 HTTP 客户端并设置其 CheckRedirect 函数来实现停止重定向。下面的代码演示了如何创建自定义的 HTTP 客户端:

package main

import (
	"fmt"
	"net/http"
	"net/url"
)

// stopRedirect 用于停止重定向,返回错误信息。
func stopRedirect(req *http.Request, via []*http.Request) error {
	return http.ErrUseLastResponse
}

func main() {
	// 创建 URL 对象
	url, _ := url.Parse("http://www.example.com")

	// 创建自定义的 HTTP 客户端
	client := &http.Client{
		CheckRedirect: stopRedirect, // 设置停止重定向函数
	}

	// 发送 HTTP GET 请求
	resp, err := client.Get(url.String())
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer resp.Body.Close()

	// 输出响应信息
	fmt.Println("Status Code:", resp.StatusCode)
	fmt.Println("Content-Length:", resp.ContentLength)
}

在上述代码中,我们通过创建一个 http.Client 对象,并设置其 CheckRedirect 函数为 stopRedirect 函数,来停止 HTTP 请求的自动重定向。如果我们不需要停止重定向,可以使用默认的 HTTP 客户端,不需要创建自定义的客户端。

结语

Golang 的 HTTP 客户端提供了自动处理重定向的功能,但有些情况下我们可能需要手动处理重定向或者停止重定向。通过创建自定义的 HTTP 客户端并设置其 CheckRedirect 函数,我们可以轻松地实现这个功能。