在Go HTTP 用戶端中強制使用IPv4/IPv6
在Go 中,http.Client 為處理網路連線的HTTP 提供請求傳輸。若要強制用戶端僅使用 IPv4 或 IPv6,請在自訂傳輸實作中利用 DialContext 函數。
修改後的傳輸程式碼段旨在透過傳回錯誤來偵測僅限 IPv6 的網域當嘗試建立 IPv4 連線時。
<code class="go">type MyTransport struct { http.Transport Dialer net.Dialer } func (t *MyTransport) DialContext(ctx context.Context, network, address string) (net.Conn, error) { if network == "ipv4" { return nil, errors.New("IPv4 not permitted") } return t.Dialer.DialContext(ctx, network, address) }</code>
要使用自訂傳輸,請實例化http.Client 物件:
<code class="go">myClient := http.Client{ Transport: &MyTransport{ Dialer: net.Dialer{ DualStack: false, // Disable IPv4/IPv6 dual-stack }, }, }</code>
強制僅使用IPv6 連線
強制僅使用IPv6 連線 透過將DualStack 設定為false,撥號器將不允許IPv4 連線。此修改有效地強制客戶端使用僅 IPv6 連線。 關閉連線使用修改後的傳輸建立的連線的行為與常規連線相同。關閉它們是由底層 HTTP 用戶端管理的,因此無需手動處理。以上是如何在 Go HTTP 用戶端中強制使用 IPv4 或 IPv6?的詳細內容。更多資訊請關注PHP中文網其他相關文章!