( request: Request, targetUrl: URL, cookieRewrite: CookieRewriteOptions | false | undefined, )
| 94 | } |
| 95 | |
| 96 | const createProxyRequestHeaders = ( |
| 97 | request: Request, |
| 98 | targetUrl: URL, |
| 99 | cookieRewrite: CookieRewriteOptions | false | undefined, |
| 100 | ) => { |
| 101 | const headers = new Headers(request.headers) |
| 102 | headers.delete('host') |
| 103 | headers.set('accept-encoding', UPSTREAM_ACCEPT_ENCODING) |
| 104 | |
| 105 | if (headers.has('origin')) |
| 106 | headers.set('origin', targetUrl.origin) |
| 107 | |
| 108 | if (cookieRewrite) { |
| 109 | const originalCookieHeader = headers.get('cookie') || undefined |
| 110 | const localScopeKey = resolveCookieRewriteLocalScopeKey(cookieRewrite, targetUrl) |
| 111 | const rewrittenCookieHeader = rewriteCookieHeaderForUpstream(headers.get('cookie') || undefined, { |
| 112 | ...cookieRewrite, |
| 113 | localScopeKey, |
| 114 | useHostPrefix: targetUrl.protocol === 'https:', |
| 115 | }) |
| 116 | if (rewrittenCookieHeader) |
| 117 | headers.set('cookie', rewrittenCookieHeader) |
| 118 | else |
| 119 | headers.delete('cookie') |
| 120 | |
| 121 | if (localScopeKey && cookieRewrite.csrfHeader) { |
| 122 | const scopedCsrfCookieName = toScopedLocalCookieName(cookieRewrite.csrfHeader.cookieName, localScopeKey) |
| 123 | const scopedCsrfToken = getCookieHeaderValue(originalCookieHeader, scopedCsrfCookieName) |
| 124 | if (scopedCsrfToken) |
| 125 | headers.set(cookieRewrite.csrfHeader.headerName, scopedCsrfToken) |
| 126 | else |
| 127 | headers.delete(cookieRewrite.csrfHeader.headerName) |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | return headers |
| 132 | } |
| 133 | |
| 134 | const getSetCookieHeaders = (headers: Headers) => { |
| 135 | const headersWithGetSetCookie = headers as Headers & { getSetCookie?: () => string[] } |
no test coverage detected