0

当 HTTP2 服务器已配置为推送 CSS 页面以及对某个 HTML 页面的请求时,它将发送一个 PUSH_PROMISE 帧以让客户端知道推送即将到来。

如果CSS文件没有找到或无法读取等,服务器应该怎么做?它是否应该在 PUSH_PROMISE 的流上发送 404 响应,是否应该什么都不做,或者当文件不可用时是否有其他方法来处理承诺?

4

1 回答 1

1

发送诸如 404 或 500 之类的 HTTP 错误可能没问题 - 浏览器将从推送缓存中丢弃内容并且不会使用它 - 它会明确地请求资源。

另一种选择是通过 重置推送的流RST_STREAM。服务器将发送一个PUSH_PROMISE后跟一个RST_STREAM可能带有一个CANCEL_STREAM_ERROR的错误代码RST_STREAM。浏览器将理解推送的流已被服务器取消,并且不会考虑推送的流 - 它会再次明确地请求资源。

于 2019-10-15T20:18:21.840 回答