笔记.解决实现客户端修改tls指纹后导致的HTTP2.0 Push数据接收问题

背景

现在很多网站都支持http2.0,在其实大部分网站没有使用到服务端主动push的功能,今天刚好遇到,在golang客户端修改 http2 header头,强制支持 enable_push=0x1 后,会导致服务端连续发了一堆请求。这样会导致客户端的接受数据无法处理push事件从而抛出错误。

工作

如何解决:
https://go-review.googlesource.com/c/net/+/85577 根据这篇文章的提交,最早就有人提出解决方案,于是便尝试接入

原golang保留了一个push解析,但是没有做完是TODO的状态,我们只需要针对这个commit进行合并就好了

func (rl *clientConnReadLoop) processPushPromise(f *MetaPushPromiseFrame) error {
 return err
}

实现接口

// PushHandler consumes a pushed response.
type PushHandler interface {
	// HandlePush will be called once for every PUSH_PROMISE received
	// from the server. If HandlePush returns before the pushed stream
	// has completed, the pushed stream will be canceled.
	HandlePush(r *PushedRequest)
}

最终通过包装层,将回调事件传递后便可以解决出现的push无法解决问题,当然我们可以在服务端push的时候进行cancel不接受完整数据包,在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值