-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnetlify.toml
More file actions
46 lines (39 loc) · 1.88 KB
/
Copy pathnetlify.toml
File metadata and controls
46 lines (39 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Absichtlich ohne [build]-Block: Build-Befehl und Publish-Verzeichnis bleiben in der
# Netlify-UI konfiguriert. Eine [build]-Sektion hier wuerde die UI-Einstellungen
# ueberschreiben – wer sie in den Code holen will, traegt hier
# command = "pnpm run build" und publish = "dist" nach.
# Absichtlich kein Catch-all-Rewrite auf die index.html: Die App kennt keine Routen
# (auch Impressum und Datenschutz sind Zustand, keine URL), und eine Regel fuer "/*"
# koennte den Zaehl-Endpoint /api/usage verschatten, den die Netlify-Function ueber
# ihren config.path bereitstellt.
[[headers]]
for = "/*"
[headers.values]
X-Content-Type-Options = "nosniff"
X-Frame-Options = "SAMEORIGIN"
Referrer-Policy = "strict-origin-when-cross-origin"
# camera=(self): Der QR-Scanner in der Spielanlage braucht die Kamera dieser Seite.
# Mit camera=() – dem Wert bis 08/2026 – lehnt der Browser getUserMedia ab, bevor
# der Nutzer ueberhaupt gefragt wird. Alles andere bleibt gesperrt.
Permissions-Policy = "geolocation=(), camera=(self), microphone=(), payment=()"
# Kein HSTS-Header hier: Netlify liefert ihn fuer die eigene Domain bereits selbst aus
# (max-age=31536000, geprueft am 07.08.2026). Ein zweiter Eintrag waere nur Redundanz.
# Service Worker und Einstiegsseite duerfen nie aus einem alten Cache kommen,
# sonst bleiben Nutzer auf einer veralteten Version haengen.
[[headers]]
for = "/sw.js"
[headers.values]
Cache-Control = "public, max-age=0, must-revalidate"
[[headers]]
for = "/index.html"
[headers.values]
Cache-Control = "public, max-age=0, must-revalidate"
[[headers]]
for = "/manifest.webmanifest"
[headers.values]
Cache-Control = "public, max-age=0, must-revalidate"
# Vite haengt Hashes an die Dateinamen, deshalb sind Assets dauerhaft cachebar.
[[headers]]
for = "/assets/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"