hono
Version:
Web framework built on Web Standards
53 lines (52 loc) • 1.16 kB
JavaScript
// 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
};