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

笔记.解决实现客户端修改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不接受完整数据包,在这里插入图片描述

标签:tls,HandlePush,PushHandler,pushed,push,Push,客户端,服务端,HTTP2.0
来源: https://blog.csdn.net/qq_22656473/article/details/120201149