当我进行 http2 推送时,我向服务器发出请求?

Posted

技术标签:

【中文标题】当我进行 http2 推送时,我向服务器发出请求?【英文标题】:when i make an http2 push, i make an request to the server? 【发布时间】:2016-04-30 19:46:33 【问题描述】:

我有一个带有 http2 的服务器,当某些客户端请求 index.html 时,我配置了 4 个图像的推送,并且它可以工作,但我在 apache 的 access_log 上看到客户端对图像提出了一些请求。这是正确的吗? 我的意思是,我认为access_log应该只有index.html的请求,客户端得到索引和推送图片的响应,而不是推送图片的请求。

这是我的 access_log 的内容:

127.0.0.1 - - [24/Jan/2016:14:33:30 +0100] "GET / HTTP/2" 200 290
127.0.0.1 - - [24/Jan/2016:14:33:30 +0100] "GET /images/pele.jpg HTTP/2" 200 299013
127.0.0.1 - - [24/Jan/2016:14:33:30 +0100] "GET /images/fault.jpg HTTP/2" 200 230215
127.0.0.1 - - [24/Jan/2016:14:33:30 +0100] "GET /images/zidane.jpg HTTP/2" 200 655296
127.0.0.1 - - [24/Jan/2016:14:33:30 +0100] "GET /images/cr7.jpg HTTP/2" 200 312883

【问题讨论】:

【参考方案1】:

在我看来,从 mod_h2 源代码来看,推送资源的处理方式与处理前端 HTTP/2 请求的方式相同——通过服务器在合成的 http/1.1 请求中发送。

这就是为什么它会像从客户端进来一样被记录。

AFAICT,目前无法在日志中区分这些。

【讨论】:

以上是关于当我进行 http2 推送时,我向服务器发出请求?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 2 将支持服务器推送,这是啥意思?

无法向 Apache 服务器发出 http2 请求,尽管服务器在响应标头中发送“升级:h2”

极客漫画:HTTP2 服务器推送

在后台接收静默推送时无法向 Alamofire 发出请求

使用 laravel 向 api 发出多个请求

golang http2 服务器推送的高级客户端