// GetSizeAndCheckRangeSupport checks whether url supports header "accpet-ranges".
// If so, returns content length.
func GetSizeAndCheckRangeSupport(url string, Log *zap.SugaredLogger) (size int64, err error) {
res, err := http.Head(url) // 获取url的head
if err != nil {
return 0, err
}
header := res.Header // 获取header
if Log != nil {
Log.Infof("GetSizeAndCheckRangeSupport get header %v for url %s", header, url)
}
accept_ranges, supported := header["Accept-Ranges"] // 获取header的Accept-Ranges
if !supported {
return -1, errors.New("Doesn't support header `Accept-Ranges`.")
} else if supported && accept_ranges[0] != "bytes" { // 如果header存在Accept-Ranges,并且值不等于bytes,则返回错误
return -1, errors.New("Support `Accept-Ranges`, but value is not `bytes`.")
}
size, err = strconv.ParseInt(header["Content-Length"][0], 10, 64) // Content-Length是body的大小
return
}
go-net/http包函数
最新推荐文章于 2023-02-26 12:32:11 发布