You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell发起HTTP/3 QUIC网络请求?

如何在PowerShell中发起HTTP/3网络请求

问题根源

PowerShell的Invoke-WebRequest和Invoke-RestMethod底层依赖.NET的HttpClient。尽管PowerShell Core 7.3.3基于支持HTTP/3的.NET 7,但默认的HttpClient实例并未启用HTTP/3支持——即使指定-HttpVersion 3.0,也会自动降级到HTTP/2。

解决方案

要发起真正的HTTP/3请求,需要手动创建配置了HTTP/3的HttpClient实例,步骤如下:

  1. 确认系统支持QUIC

    • Windows:需Windows 11/Server 2022及以上版本,或Windows 10安装KB5003237及后续更新
    • Linux/macOS:确保系统已安装支持QUIC的依赖库(如libmsquic)
  2. 使用自定义HttpClient发起请求
    以下是可直接运行的PowerShell代码:

    # 导入.NET相关命名空间
    using namespace System.Net.Http
    using namespace System.Net.Http.Headers
    
    # 创建HttpClientHandler并配置TLS 1.3(HTTP/3依赖TLS 1.3)
    $handler = [HttpClientHandler]::new()
    $handler.SslProtocols = [System.Security.Authentication.SslProtocols]::Tls13
    
    # 创建HttpClient,指定默认请求版本为HTTP/3.0,且强制使用该版本不降级
    $client = [HttpClient]::new($handler)
    $client.DefaultRequestVersion = [HttpVersion]::Http30
    $client.DefaultVersionPolicy = [HttpVersionPolicy]::RequestVersionExact
    
    # 发起HTTP/3请求
    $response = $client.GetAsync("https://quic.nginx.org/test").Result
    
    # 输出结果
    Write-Host "响应HTTP版本: $($response.Version)"
    Write-Host "状态码: $($response.StatusCode)"
    Write-Host "响应头:"
    $response.Headers | Format-List
    

关键配置说明

  • DefaultRequestVersion = [HttpVersion]::Http30:明确指定请求使用HTTP/3.0
  • DefaultVersionPolicy = [HttpVersionPolicy]::RequestVersionExact:禁止客户端自动降级到更低版本的HTTP协议
  • SslProtocols = [System.Security.Authentication.SslProtocols]::Tls13:HTTP/3强制要求使用TLS 1.3

内容的提问来源于stack exchange,提问作者Trevor Sullivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:47:45