about summary refs log tree commit diff stats
path: root/src/server/request.nim
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-03-28 17:33:30 +0100
committerbptato <nincsnevem662@gmail.com>2025-03-28 17:33:30 +0100
commit470e32e3b056d2226967aed0fa8cdb24cebd9401 (patch)
treed32b4120da31ccea7501b9950a48db0141a7ed50 /src/server/request.nim
parente42565a5a9243d09beec9b89491e50d7032b294c (diff)
downloadchawan-470e32e3b056d2226967aed0fa8cdb24cebd9401.tar.gz
loader: respect credentials mode
Diffstat (limited to 'src/server/request.nim')
-rw-r--r--src/server/request.nim22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/server/request.nim b/src/server/request.nim
index 31b4c117..e129be9f 100644
--- a/src/server/request.nim
+++ b/src/server/request.nim
@@ -81,12 +81,12 @@ type
     body*: RequestBody
     referrer*: URL
     tocache*: bool
+    credentialsMode*: CredentialsMode
 
   JSRequest* = ref object
     request*: Request
     mode* {.jsget.}: RequestMode
     destination* {.jsget.}: RequestDestination
-    credentialsMode* {.jsget.}: CredentialsMode
     origin*: RequestOrigin
     window*: RequestWindow
     client*: Option[EnvironmentSettings]
@@ -130,6 +130,9 @@ func url(this: JSRequest): URL =
 proc jsUrl(this: JSRequest): string {.jsfget: "url".} =
   return $this.url
 
+func credentialsMode(this: JSRequest): string {.jsfget.} =
+  return $this.request.credentialsMode
+
 #TODO pretty sure this is incorrect
 proc jsReferrer(this: JSRequest): string {.jsfget: "referrer".} =
   if this.request.referrer != nil:
@@ -137,14 +140,16 @@ proc jsReferrer(this: JSRequest): string {.jsfget: "referrer".} =
   return ""
 
 func newRequest*(url: URL; httpMethod = hmGet; headers = newHeaders(hgRequest);
-    body = RequestBody(); referrer: URL = nil; tocache = false): Request =
+    body = RequestBody(); referrer: URL = nil; tocache = false;
+    credentialsMode = cmSameOrigin): Request =
   return Request(
     url: url,
     httpMethod: httpMethod,
     headers: headers,
     body: body,
     referrer: referrer,
-    tocache: tocache
+    tocache: tocache,
+    credentialsMode: credentialsMode
   )
 
 func createPotentialCORSRequest*(url: URL; destination: RequestDestination;
@@ -157,10 +162,9 @@ func createPotentialCORSRequest*(url: URL; destination: RequestDestination;
     mode = rmSameOrigin
   let credentialsMode = if cors == caAnonymous: cmSameOrigin else: cmInclude
   return JSRequest(
-    request: newRequest(url),
+    request: newRequest(url, credentialsMode = credentialsMode),
     destination: destination,
-    mode: mode,
-    credentialsMode: credentialsMode
+    mode: mode
   )
 
 type
@@ -223,7 +227,7 @@ proc newRequest*(ctx: JSContext; resource: JSValueConst;
     httpMethod = res.request.httpMethod
     headers[] = res.headers[]
     referrer = res.request.referrer
-    credentials = res.credentialsMode
+    credentials = res.request.credentialsMode
     body = res.request.body
     fallbackMode = opt(RequestMode)
     window = res.window
@@ -270,10 +274,10 @@ proc newRequest*(ctx: JSContext; resource: JSValueConst;
       httpMethod,
       headers,
       body,
-      referrer = referrer
+      referrer = referrer,
+      credentialsMode = credentials
     ),
     mode: mode,
-    credentialsMode: credentials,
     destination: destination,
     window: window
   ))