Recherche partout (#68) : Recherche-partout-68-CSP
This commit is contained in:
@@ -174,9 +174,29 @@ class ContentSecurityPolicyMiddleware(BaseHTTPMiddleware):
|
||||
request.headers.get("host", ""))
|
||||
agent = re.sub(r"[^0-9A-Za-z.\-:/]", "",
|
||||
draco_urls.origine(draco_urls.agent_url()))
|
||||
response.headers[self.CSP_HEADER] = self.CSP_VALUE.format(
|
||||
csp = self.CSP_VALUE.format(
|
||||
nonce=nonce, host=host, agent=agent
|
||||
)
|
||||
# Recherche partout (#68) : la page /recherche appelle les
|
||||
# API de recherche des sœurs depuis le navigateur — sa
|
||||
# connect-src doit les nommer, sinon le navigateur bloque
|
||||
# les appels avant même CORS. Les autres pages gardent la
|
||||
# CSP inchangée. `draco_urls` est déjà importé dans ce
|
||||
# dispatch (contexte d'hôte posé plus haut).
|
||||
if request.url.path == "/recherche":
|
||||
try:
|
||||
soeurs = " ".join(sorted({
|
||||
draco_urls.origine(draco_urls.toutes()[k])
|
||||
for k in ("obsigate", "tiktak", "kanbante")
|
||||
}))
|
||||
csp = csp.replace(
|
||||
"connect-src 'self' " + agent + " ",
|
||||
"connect-src 'self' " + agent + " " + soeurs + " ",
|
||||
1,
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
response.headers[self.CSP_HEADER] = csp
|
||||
return response
|
||||
|
||||
|
||||
@@ -288,3 +308,4 @@ class RateLimitMiddleware(BaseHTTPMiddleware):
|
||||
for k in expired:
|
||||
del self._store[k]
|
||||
self._last_prune = now
|
||||
|
||||
|
||||
Reference in New Issue
Block a user