export default { async fetch(request, env, ctx) { const targetUrl = "https://play.geforcenow.com"; const url = new URL(request.url); // Construct target URL while keeping path and query params intact const destination = targetUrl + url.pathname + url.search; // Clone request headers to send to origin const requestHeaders = new Headers(request.headers); requestHeaders.set("Host", "play.geforcenow.com"); requestHeaders.set("Referer", "https://play.geforcenow.com"); // Fetch resource from GeForce NOW let response = await fetch(destination, { method: request.method, headers: requestHeaders, body: ["GET", "HEAD"].includes(request.method) ? null : request.body, redirect: "follow", }); // Create a new response so we can modify response headers let newHeaders = new Headers(response.headers); // Strip framing block headers newHeaders.delete("x-frame-options"); newHeaders.delete("content-security-policy"); // Re-introduce relaxed CSP (optional, prevents CSP leaks) newHeaders.set("Access-Control-Allow-Origin", "*"); return new Response(response.body, { status: response.status, statusText: response.statusText, headers: newHeaders, }); }, };