diff --git a/httpx/_utils.py b/httpx/_utils.py index 7fe827da4d..7c8820cda1 100644 --- a/httpx/_utils.py +++ b/httpx/_utils.py @@ -67,7 +67,13 @@ def get_environment_proxies() -> dict[str, str | None]: elif is_ipv4_hostname(hostname): mounts[f"all://{hostname}"] = None elif is_ipv6_hostname(hostname): - mounts[f"all://[{hostname}]"] = None + if "/" in hostname: + CIDR = hostname.split("/") + hostname = f"{CIDR[0]}" + subnet = f"/{CIDR[1]}" + else: + subnet = "" + mounts[f"all://[{hostname}]{subnet}"] = None elif hostname.lower() == "localhost": mounts[f"all://{hostname}"] = None else: diff --git a/tests/test_utils.py b/tests/test_utils.py index f9c215f65a..276db17290 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -100,6 +100,7 @@ def test_logging_redirect_chain(server, caplog): ({"no_proxy": "127.0.0.1"}, {"all://127.0.0.1": None}), ({"no_proxy": "192.168.0.0/16"}, {"all://192.168.0.0/16": None}), ({"no_proxy": "::1"}, {"all://[::1]": None}), + ({"no_proxy": "fe11::/16"}, {"all://[fe11::]/16": None}), ({"no_proxy": "localhost"}, {"all://localhost": None}), ({"no_proxy": "github.com"}, {"all://*github.com": None}), ({"no_proxy": ".github.com"}, {"all://*.github.com": None}),