Compare commits
2 Commits
0aafdfa382
...
73971a43f0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
73971a43f0 | ||
|
|
39d0de751b |
@@ -67,7 +67,7 @@ class SecurityHeadersMiddleware(BaseHTTPMiddleware):
|
|||||||
response.headers["Content-Security-Policy"] = (
|
response.headers["Content-Security-Policy"] = (
|
||||||
"default-src 'self'; "
|
"default-src 'self'; "
|
||||||
"script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; "
|
"script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; "
|
||||||
"style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; "
|
"style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdn.jsdelivr.net; "
|
||||||
"font-src 'self' https://fonts.gstatic.com; "
|
"font-src 'self' https://fonts.gstatic.com; "
|
||||||
"img-src 'self' data:; "
|
"img-src 'self' data:; "
|
||||||
"connect-src 'self' https://cdn.jsdelivr.net; "
|
"connect-src 'self' https://cdn.jsdelivr.net; "
|
||||||
@@ -589,6 +589,12 @@ async def reload_data(
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/favicon.svg")
|
||||||
|
async def favicon():
|
||||||
|
"""Serve favicon."""
|
||||||
|
return FileResponse(settings.frontend_dir / "favicon.svg", media_type="image/svg+xml")
|
||||||
|
|
||||||
|
|
||||||
@app.get("/robots.txt")
|
@app.get("/robots.txt")
|
||||||
async def robots_txt():
|
async def robots_txt():
|
||||||
"""Serve robots.txt for search engine crawlers."""
|
"""Serve robots.txt for search engine crawlers."""
|
||||||
|
|||||||
6
frontend/favicon.svg
Normal file
6
frontend/favicon.svg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect width="40" height="40" rx="8" fill="#1a1612"/>
|
||||||
|
<circle cx="20" cy="20" r="14" stroke="#e07256" stroke-width="2"/>
|
||||||
|
<path d="M20 8L20 32M12 14L28 14M10 20L30 20M12 26L28 26" stroke="#e07256" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
|
<circle cx="20" cy="20" r="3" fill="#e07256"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 374 B |
@@ -11,6 +11,9 @@
|
|||||||
<meta name="author" content="SchoolCompare">
|
<meta name="author" content="SchoolCompare">
|
||||||
<meta name="robots" content="index, follow">
|
<meta name="robots" content="index, follow">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||||
|
|
||||||
<!-- Canonical -->
|
<!-- Canonical -->
|
||||||
<link rel="canonical" href="https://schoolcompare.co.uk/">
|
<link rel="canonical" href="https://schoolcompare.co.uk/">
|
||||||
|
|
||||||
@@ -55,6 +58,8 @@
|
|||||||
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=Playfair+Display:wght@600;700&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=Playfair+Display:wght@600;700&display=swap" rel="stylesheet">
|
||||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
<link rel="stylesheet" href="/static/styles.css">
|
<link rel="stylesheet" href="/static/styles.css">
|
||||||
|
<!-- Cookie Consent Banner -->
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/silktide/consent-manager@main/silktide-consent-manager.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="noise-overlay"></div>
|
<div class="noise-overlay"></div>
|
||||||
@@ -340,6 +345,28 @@
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="/static/app.js"></script>
|
<script src="/static/app.js"></script>
|
||||||
|
<!-- Cookie Consent Banner -->
|
||||||
|
<script src="https://cdn.jsdelivr.net/gh/silktide/consent-manager@main/silktide-consent-manager.js"></script>
|
||||||
|
<script>
|
||||||
|
window.silktideConsentManager.init({
|
||||||
|
consentTypes: [
|
||||||
|
{
|
||||||
|
id: 'necessary',
|
||||||
|
label: 'Necessary',
|
||||||
|
description: 'Essential cookies required for the website to function properly.',
|
||||||
|
required: true,
|
||||||
|
defaultValue: true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
text: {
|
||||||
|
title: 'Cookie Preferences',
|
||||||
|
description: 'This website does not use tracking cookies. We only use essential cookies required for the site to function.',
|
||||||
|
acceptAll: 'Accept',
|
||||||
|
rejectAll: 'Reject All',
|
||||||
|
save: 'Save Preferences'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user