{"record":{"id":"08cdfb6cfc924685","repo":"apache/superset","slug":"missing-url-parameter","errorCode":null,"errorMessage":"Missing URL parameter","messagePattern":"Missing URL parameter","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"superset/views/redirect.py","lineNumber":63,"sourceCode":"    \"\"\"\n    Warning page for external links found in alert/report emails.\n\n    This endpoint is publicly accessible (no authentication required)\n    because email recipients may not have an active Superset session.\n    \"\"\"\n\n    route_base = \"/redirect\"\n\n    @expose(\"/\")\n    def redirect_warning(self) -> FlaskResponse:\n        \"\"\"Validate the target URL and either redirect or show the warning page.\"\"\"\n        if not is_feature_enabled(\"ALERT_REPORTS\"):\n            abort(404)\n\n        target_url = request.args.get(\"url\", \"\").strip()\n\n        if not target_url:\n            abort(400, description=\"Missing URL parameter\")\n\n        # Block dangerous schemes using urlparse for robust detection\n        parsed = urlparse(target_url)\n        if parsed.scheme.lower() in DANGEROUS_SCHEMES:\n            logger.warning(\"Blocked dangerous URL scheme: %s\", target_url[:80])\n            abort(400, description=\"Invalid URL scheme\")\n\n        # Internal URLs redirect immediately\n        if is_safe_redirect_url(target_url):\n            return redirect(target_url)\n\n        # External URLs: render the React warning page\n        return super().render_app_template()\n","sourceCodeStart":45,"sourceCodeEnd":77,"githubUrl":"https://github.com/apache/superset/blob/f4587218dd19d046c3e4d00063e7d27f8a2ed354/superset/views/redirect.py#L45-L77","documentation":"Error \"Missing URL parameter\" thrown in apache/superset.","triggerScenarios":"The redirect endpoint is called without its mandatory URL parameter.","commonSituations":"Hitting the short-link redirect endpoint without the required URL parameter.","solutions":["Include the required URL query parameter in the request."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4587218dd19d046c3e4d00063e7d27f8a2ed354","analyzedAt":"2026-08-14T22:39:27.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}