INNER CODE UNIT · Python

_is_loopback_origin

slive777/OpenAver · web/app.py:536

def _is_loopback_origin(origin):
    """`Origin` header 是否解析出 loopback hostname(判 host 不判 port,CD-110b-5)。

    用 `urlparse` 取 `hostname`;`null`、malformed(`http://`、`not-a-url`)解析出的
    `hostname` 為 `None`/空字串,一律 fail-closed 回 False(不得當成「沒有 Origin」
    放行——「沒有 Origin」是呼叫端看 `origin is None` 另行判斷,不歸本函式管)。

    `urlparse` 本身也可能拋 `ValueError`(實測:未閉合的 IPv6 字面值
    `http://[::1` → `Invalid IPv6 URL`)。不接的話會變成未處理例外 → 500,
    既非 fail-closed 的 403、也把「被擋下」與「伺服器壞了」混在一起。一律接住回 False。
    """
    try:
        hostname = urlparse(origin).hostname
    except ValueError:
        return False
    return bool(hostname) and _is_loopback_host(hostname)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…