如何使用http3

背景

早就听说http3和quic,但是一直没折腾成功,今天又折腾了一下,终于看到了h3。

条件

  • https(证书必须安全)
  • Alt-Svc响应头(标识开放的对应udp端口)
  • udp端口访问通畅
  • 浏览器竞速(浏览器同时发起tcp和udp请求,哪个快用哪个)
    注意,后面测试使用的是8443端口,一般情况下,http3使用443端口。

https

证书必须安全,在http2中,不安全依旧能用,后面有张图可以看看。

可以使用mkcert安装本地证书作验证,通过了之后再尝试线上环境。

winget install mkcert
mkcert -install

生成一个新的证书

mkcert localhost 127.0.0.1 ::1

在Caddyfile中

tls ./localhost+2.pem ./localhost+2-key.pem

alt-svc

header Alt-Svc `h3=":8443"; ma=2592000, h3-29=":8443"; ma=2592000`

udp

caddy中,不管怎么配置,他都只开ipv6的端口。导致一直不通
powershell中输入如下命令,可以查看当前开放的udp端口

Get-NetUDPEndpoint | Select-Object LocalAddress, LocalPort, OwningProcess
PS D:\www> Get-NetUDPEndpoint -LocalPort 8443 | Select-Object LocalAddress, LocalPort, OwningProcess

LocalAddress LocalPort OwningProcess
------------ --------- -------------
::                8443         81976

浏览器

浏览器就是死活不使用http3。
打开powershell输入如下命令

& "C:\Users\32956\AppData\Local\Google\Chrome\Application\chrome.exe" `
    --user-data-dir="$env:TEMP\chrome_h3_test" `
    --origin-to-force-quic-on=127.0.0.1:8443 `
    --force-quic `
    --ignore-certificate-errors `
    "https://127.0.0.1:8443/image-hosts"

如果不行,那么会直接显示无法访问,不会回退到http2。
image

测试

可以先使用一个脚本进行测试

# /// script
# dependencies = ["aioquic"]
# ///
import asyncio
from aioquic.quic.configuration import QuicConfiguration
from aioquic.asyncio import connect

async def main():
    # 强制要求使用 H3 协议
    configuration = QuicConfiguration(is_client=True, alpn_protocols=["h3"])
    configuration.verify_mode = 0  # 忽略本地证书验证
    
    try:
        # 既然 LocalAddress 已经是 127.0.0.1,我们直接连
        async with connect("127.0.0.1", 8443, configuration=configuration) as client:
            print("✅ 成功!底层 UDP (QUIC) 握手已完成。")
            print("这证明你的 Caddy 已经完美支持 HTTP/3。")
    except Exception as e:
        print(f"❌ UDP 握手失败: {e}")

if __name__ == "__main__":
    asyncio.run(main())

阶段

http只能使用1.1,无法使用http2
image

在http的网站,可以调用https的http2协议接口。
http3是最苛刻的。

其他

假如使用内网穿透服务,需要使用两条隧道,一条tcp、一条udp,配置起来有点烦。

posted @ 2026-01-29 15:22  魂祈梦  阅读(4)  评论(0)    收藏  举报