問題:
使用🎜>問題:
使用Go 1.11 的Go 1.11 net/ http 用戶端,如何確定網域是否僅支援IPv6 並在需要時阻止其使用IPv4?
解決方案:
強制使用 IPv4 或 IPv6 Go的net/http客戶端,使用net.Dialer的Control選項修改其DialContext函數。此函數檢查用於傳出連線的網路類型。<code class="go">func ModifiedTransport() { var MyTransport = &http.Transport{ DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, DualStack: false, Control: func(network, address string, c syscall.RawConn) error { if network == "ipv4" { // Force cancellation of IPv4 connections return errors.New("you should not use ipv4") } return nil }, }).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, } var myClient = http.Client{Transport: MyTransport} resp, myerr := myClient.Get("http://www.github.com") if myerr != nil { fmt.Println("request error") return } var buffer = make([]byte, 1000) resp.Body.Read(buffer) fmt.Println(string(buffer)) }</code>
將以下程式碼複製到您的主函數中:
以上是如何在 Go 的 net/http 用戶端強制使用 IPv4/IPv6?的詳細內容。更多資訊請關注PHP中文網其他相關文章!