duanlaiquan8174 2017-05-21 15:22
浏览 32
已采纳

重定向的上下文超时,而不是使用客户端超时?

I perform an HTTP request from a client with an explicit http.Client.Timeout

client := http.Client{
    Timeout: timeout, // 5 seconds
}

httpResponse, err := client.Do(httpRequest)

But this client will perform a series of redirects (I'm not sure how many).

From what I understand, each redirect will restart the timeout, so the timeout of 5 seconds will be five-seconds * num-of-redirects.

Is it possible to rather pass in the timeout inside a context.Context?

ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
// do I need cancel?
httpRequest.WithContext(ctx)
httpResponse, err := client.Do(httpRequest)

Would this encompass the request and all redirects in the same timeout? Or do I misunderstand redirects/timeouts/contexts?

  • 写回答

1条回答 默认 最新

  • droxy80248 2017-05-21 15:30
    关注

    It does not look like each redirect will reset the http.Client time out.

    From the net/http documentation:

    // Timeout specifies a time limit for requests made by this
    // Client. The timeout includes connection time, any
    // redirects, and reading the response body.
    

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里