| 245 | return origin_arg |
| 246 | |
| 247 | def get_origin_from_referer(request: Request): |
| 248 | referer = request.headers.get("referer") |
| 249 | if not referer: |
| 250 | return None |
| 251 | |
| 252 | try: |
| 253 | parsed = urlparse(referer) |
| 254 | if not parsed.scheme or not parsed.hostname: |
| 255 | return None |
| 256 | port = parsed.port |
| 257 | if port: |
| 258 | if (parsed.scheme == "http" and port != 80) or \ |
| 259 | (parsed.scheme == "https" and port != 443): |
| 260 | return f"{parsed.scheme}://{parsed.hostname}:{port}" |
| 261 | |
| 262 | return f"{parsed.scheme}://{parsed.hostname}" |
| 263 | except Exception as e: |
| 264 | SQLBotLogUtil.error(f"解析 Referer 出错: {e}") |
| 265 | return referer |
| 266 | |
| 267 | def origin_match_domain(origin: str, domain: str) -> bool: |
| 268 | if not origin or not domain: |