【问题标题】:Send a chunked HTTPS response from a Go server从 Go 服务器发送分块的 HTTPS 响应
【发布时间】:2018-11-12 08:47:09
【问题描述】:

以下示例非常适用于 HTTPSend a chunked HTTP response from a Go server

添加 TLS 后,我看到响应不再分块:

func main() {
  http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    flusher, ok := w.(http.Flusher)
    if !ok {
      panic("expected http.ResponseWriter to be an http.Flusher")
    }
    w.Header().Set("X-Content-Type-Options", "nosniff")
    for i := 1; i <= 10; i++ {
      fmt.Fprintf(w, "Chunk #%d\n", i)
      flusher.Flush() // Trigger "chunked" encoding and send a chunk...
      time.Sleep(500 * time.Millisecond)
    }
  })

  log.Print("Listening on localhost:8080")
  log.Fatal(http.ListenAndServeTLS(":8080", "<CERT_FILE>", "<KEY_FILE>", nil))
}

任何想法为什么会这样?

【问题讨论】:

  • 你能发布一些展示非分块响应的东西吗?我已经在我的本地机器上尝试过你的代码,它可以工作。
  • 你使用的是 http/2 并且不支持块
  • 感谢您尝试这个@ssemilla。我正在从 docker 容器中执行我的代码。我会把它剥掉,看看会发生什么。

标签: ssl go chunked-encoding


【解决方案1】:
log.Infof("Protocol Version: %s", request.Proto)

确认使用 HTTP/2.0

感谢 Vorsprung

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多