Forráskód Böngészése

fix: update CSP wss: -> wss://api.{DOMAIN} for Safari WebSocket + wrap WS constructor in try-catch

neyrogovnarik 1 hónapja
szülő
commit
5aa65855b1
2 módosított fájl, 8 hozzáadás és 2 törlés
  1. 1 1
      deploy/Caddyfile
  2. 7 1
      frontend/src/hooks/useWebSocket.ts

+ 1 - 1
deploy/Caddyfile

@@ -37,7 +37,7 @@ http://{$DOMAIN} {
 		X-Frame-Options "DENY"
 		Referrer-Policy "strict-origin-when-cross-origin"
 		Permissions-Policy "geolocation=(self), microphone=(), camera=()"
-		Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://*.basemaps.cartocdn.com; font-src 'self' data:; connect-src 'self' wss: https://api.{$DOMAIN}; frame-ancestors 'none';"
+		Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://*.basemaps.cartocdn.com; font-src 'self' data:; connect-src 'self' wss://api.{$DOMAIN} https://api.{$DOMAIN}; frame-ancestors 'none';"
 	}
 
 	@static {

+ 7 - 1
frontend/src/hooks/useWebSocket.ts

@@ -47,7 +47,13 @@ export function useWebSocket(enabled: boolean) {
     function connect() {
       if (!enabledRef.current) return
 
-      const ws = new WebSocket(wsUrl)
+      let ws: WebSocket
+      try {
+        ws = new WebSocket(wsUrl)
+      } catch {
+        scheduleReconnect()
+        return
+      }
       wsRef.current = ws
 
       ws.onopen = () => {