随笔 - 173,  文章 - 0,  评论 - 0,  阅读 - 10万

报错如下:

1 4xx BadRequesterror reading server preface: http2: frame too large

其中4xx为客户端报错中的一个具体数字。比如: 404/415,仅以报错举例,且出现报错码不固定。

但是error msg的核心内容不变: frame too large...

这个是因为客户端在没有 TLS 加密的情况下发送 HTTP/2 帧,服务器端在 HTTP 1.1 中以未加密的 HTTP 正文发回错误消息。

grpc是以http2.0进行交互,而客户端如果由于某些原因,将http转为2.0以下的标准,则会出发这个报错。

以golang的grpc举例规避:

复制代码
    proxyCA := "/var/tmp/fullchain.pem" // CA cert that signed the proxy
    f, err := os.ReadFile(proxyCA)
    
    p := x509.NewCertPool()
    p.AppendCertsFromPEM(f)
    tlsConfig := &tls.Config{
        RootCAs: p,
    }
    conn, err := grpc.Dial(*addr, grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig)))
复制代码

特别需要指出:

在postman加成的情况下,会自动集成证书,帮助完成校验,才能正常交互(具体需要抓包自证,不过不携带证书,必然访问失败,所以也可暂时反推这个结果。)

posted on   黑熊一只  阅读(2851)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示