【发布时间】:2018-06-03 07:41:06
【问题描述】:
在服务工作者中,我想将 HTML 注入 HTTP 响应正文:
当返回缓存的 HTML 响应时,我想在流式传输原始响应之前和之后的同时注释 <html> 元素(例如,将 <html lang="en"> 转换为 <html data-origin="cache" lang="en">)。
我已尝试基于Jake Archibald's streams fawning 实现此功能,但无法正常工作。在下面的示例中,我会想象injectHTML 返回一个包装器,该包装器会转换原始流的一部分——但我不知道如何到达那里。任何建议将不胜感激。
addEventListener("fetch", async event => {
let request = event.request;
if(request.method !== "GET" ||
!request.headers.get("Accept").includes("text/html")) {
return;
}
let response = await fetch(request);
let stream = injectHTML(response.body);
response = new Response(stream);
event.respondWith(response);
});
【问题讨论】: