Skip to content

Commit c703fae

Browse files
sleepdotexesamcx
andauthored
Allow unsafe-eval during development (#55998)
Fixes issue where a freshly cloned example will not work in development mode due to `unsafe-eval` being blocked by the CSP. Currently, the example will not work in development. Running the example with `run dev` will produce EvalError errors in console which prevent the app from functioning. This error also prevents any `<Script>` components with `afterInteractive` from being loaded. These issues do not occur in production where `eval` is not used. This PR: - Fixes the issue by allowing `unsafe-eval` if the environment is not `production`. - Improves the `script-src` value by [allowing backwards compatibility with browsers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#strict-dynamic) that do not support `strict-dynamic` (`https: http: 'unsafe-inline'` will be ignored by browsers that support `strict-dynamic`). Some further details are available here: #55638. This PR is not a fix for the issue however. - Fixes #61316 Co-authored-by: Sam Ko <sam@vercel.com>
1 parent 1cb16f8 commit c703fae

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

examples/with-strict-csp/middleware.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ export function middleware(request) {
44
const nonce = Buffer.from(crypto.randomUUID()).toString("base64");
55
const cspHeader = `
66
default-src 'self';
7-
script-src 'self' 'nonce-${nonce}' 'strict-dynamic';
7+
script-src 'self' 'nonce-${nonce}' 'strict-dynamic' https: http: 'unsafe-inline' ${
8+
process.env.NODE_ENV === "production" ? "" : `'unsafe-eval'`
9+
};
810
style-src 'self' 'nonce-${nonce}';
911
img-src 'self' blob: data:;
1012
font-src 'self';

0 commit comments

Comments
 (0)