如何在 GO 中执行 HEAD 请求?

How to execute a HEAD Request in GO?

我想使用 GO 获取页面的内容长度 net/http?我可以在终端中使用 curl -i -X HEAD https://golang.org 执行此操作,然后检查内容长度字段。

使用http.Head()

res, err := http.Head("https://golang.org")
if err != nil {
    panic(err)
}
contentlength:=res.ContentLength
fmt.Printf("ContentLength:%v",contentlength)

另一个选项:

package main
import "net/http"

func main() {
   req, e := http.NewRequest("HEAD", "https://whosebug.com", nil)
   if e != nil {
      panic(e)
   }
   res, e := new(http.Client).Do(req)
   if e != nil {
      panic(e)
   }
   println(res.StatusCode == 200)
}

https://golang.org/pkg/net/http#NewRequest

有超时

package main

import (
    "net/http"
    "os"
    "fmt"
    "time"
)

func main() {
    var client = &http.Client{
        Timeout: time.Second * 10,
    }

    res, err := client.Head("https://whosebug.com")
    if err != nil {
        if os.IsTimeout(err) {
            // timeout
            panic(err)
        } else {
            panic(err)
        }
    }
    
    fmt.Println("Status:", res.StatusCode)
    fmt.Println("ContentLength:", res.ContentLength)
}

https://play.golang.org/p/5UAA-PUyoZc