Fix CSP IndieAuth redirection issue

This commit is contained in:
Thomas Sileo 2022-12-16 09:22:40 +01:00
parent 573a76c0c5
commit db6016394b
3 changed files with 47 additions and 5 deletions

28
app/redirect.py Normal file
View file

@ -0,0 +1,28 @@
from fastapi import Request
from app import templates
from app.database import AsyncSession
async def redirect(
request: Request,
db_session: AsyncSession,
url: str,
) -> templates.TemplateResponse:
"""
Similar to RedirectResponse, but uses a 200 response with HTML.
Needed for remote redirects on form submission endpoints,
since our CSP policy disallows remote form submission.
https://github.com/w3c/webappsec-csp/issues/8#issuecomment-810108984
"""
return await templates.render_template(
db_session,
request,
"redirect.html",
{
"request": request,
"url": url,
},
headers={"Refresh": "0;url=" + url},
)