UNPKG

hono

Version:

Web framework built on Web Standards

53 lines (52 loc) 1.16 kB
// src/helper/proxy/index.ts var hopByHopHeaders = [ "connection", "keep-alive", "proxy-authenticate", "proxy-authorization", "te", "trailers", "transfer-encoding" ]; var buildRequestInitFromRequest = (request) => { if (!request) { return {}; } const headers = new Headers(request.headers); hopByHopHeaders.forEach((header) => { headers.delete(header); }); return { method: request.method, body: request.body, duplex: request.body ? "half" : void 0, headers }; }; var proxy = async (input, proxyInit) => { const { raw, ...requestInit } = proxyInit ?? {}; const req = new Request( input, { ...buildRequestInitFromRequest(raw), ...requestInit } ); req.headers.delete("accept-encoding"); const res = await fetch(req); const resHeaders = new Headers(res.headers); hopByHopHeaders.forEach((header) => { resHeaders.delete(header); }); if (resHeaders.has("content-encoding")) { resHeaders.delete("content-encoding"); resHeaders.delete("content-length"); } return new Response(res.body, { ...res, headers: resHeaders }); }; export { proxy };