From 3faefa04821122ff6858bf8549807f64dec9909a Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Tue, 12 Aug 2025 16:45:38 +0900 Subject: [PATCH] chore(rsc): fix csp example for Vite server ping SharedWorker --- .../plugin-rsc/examples/basic/src/server.tsx | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/plugin-rsc/examples/basic/src/server.tsx b/packages/plugin-rsc/examples/basic/src/server.tsx index 9beac0a6..e4ba468d 100644 --- a/packages/plugin-rsc/examples/basic/src/server.tsx +++ b/packages/plugin-rsc/examples/basic/src/server.tsx @@ -22,15 +22,17 @@ export default async function handler(request: Request): Promise { nonce, }) if (nonce && response.headers.get('content-type')?.includes('text/html')) { - response.headers.set( - 'content-security-policy', - `default-src 'self'; ` + - // `unsafe-eval` is required during dev since React uses eval for findSourceMapURL feature - `script-src 'self' 'nonce-${nonce}' ${ - import.meta.env.DEV ? `'unsafe-eval'` : `` - } ; ` + - `style-src 'self' 'nonce-${nonce}'; `, - ) + const cspValue = [ + `default-src 'self';`, + // `unsafe-eval` is required during dev since React uses eval for findSourceMapURL feature + `script-src 'self' 'nonce-${nonce}' ${import.meta.env.DEV ? `'unsafe-eval'` : ``};`, + `style-src 'self' 'nonce-${nonce}';`, + // allow blob: worker for Vite server ping shared worker + import.meta.hot && `worker-src 'self' blob:;`, + ] + .filter(Boolean) + .join('') + response.headers.set('content-security-policy', cspValue) } return response }