亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang - TLS 握手錯誤

Golang - TLS 握手錯誤

Go
一只甜甜圈 2021-12-07 10:41:56
我在 go 中運行 https Web 服務器。我正在使用對 Web 服務器進行 ajax 調用的 angular Web 應用程序(Chrome 瀏覽器)對其進行測試。如果我不斷地訪問網絡服務器,一切似乎都在工作。但是每當我讓它閑置一段時間并點擊 Web 服務器時,來自瀏覽器的 ajax 調用都沒有得到響應。我幾乎總是在我的服務器日志中看到這個日志行。2016/01/16 04:06:47.006977 http: TLS handshake error from 42.21.139.47:51463: EOF我可以確認IP地址是我的IP地址。我正在像這樣啟動我的 https 服務器:r := mux.NewRouter()r.HandleFunc("/status", handleStatus)setUpLoginEndpoint(&cfg.Session, r)setUpLogoutEndpoint(cfg.Session.CookieName, r)setUpChangePasswordEndpoint(cfg.Session.CookieName, r)setUpMetricSinkEndpoint(cfg.Metric.SinkApiKey, r)setUpMetricQueryEndpoint(cfg.Session.CookieName, r)http.ListenAndServeTLS(":443", "../cert.pem", "../keys.pem", &Server{r})我可以確認我正在使用 defer r.Body.Close() 關閉每個處理程序中的請求正文。我正在使用 go 1.5.2。
查看完整描述

2 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

我啟用了 tcp keepalive,這個問題就解決了。我在谷歌計算引擎中運行我的虛擬機,可能防火墻終止了空閑連接。

TCP 保持活動狀態

在 linux 中配置 tcp 保持活動狀態

Golang http 服務器自動選擇了這一點,所以我的 golang 代碼不需要更改。

問候,

沙迪亞


查看完整回答
反對 回復 2021-12-07
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

我收到與 OP 相同的錯誤,但就我而言,我指定的 TLSHandshakeTimeout 值太低。我不確定什么是合適的值,但將它從 100ms 移到 700ms 消除了我的錯誤。對于遇到相同錯誤并在其 http.Client 設置中指定非默認 http.Transport 配置值的其他人,您可能需要確保將 TLSHandshakeTimeout 設置為足夠高的值。


&http.Client{

  Transport: &http.Transport{

    TLSHandshakeTimeout:   700 * time.Millisecond, //<-- I was receiving OP's error when I had this set to 100ms

  }

}


查看完整回答
反對 回復 2021-12-07
  • 2 回答
  • 0 關注
  • 425 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號