21 lines
492 B
Python
21 lines
492 B
Python
from urllib.parse import urlparse
|
|
from flask import request
|
|
|
|
|
|
def safe_redirect(fallback_url: str = "/", referrer_url: str = None) -> str:
|
|
if referrer_url is None:
|
|
referrer_url = request.referrer
|
|
|
|
if not referrer_url:
|
|
return fallback_url
|
|
|
|
try:
|
|
parsed_referrer = urlparse(referrer_url)
|
|
|
|
if parsed_referrer.netloc and parsed_referrer.netloc == request.host:
|
|
return referrer_url
|
|
except Exception:
|
|
pass
|
|
|
|
return fallback_url
|