fix: NO_PROXY should support IPv4, IPv6 and localhost #2659
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #2660
The
get_environment_proxies
function in _utils.py is responsible for parsing and mounting proxy info from system environment.httpx/httpx/_utils.py
Lines 229 to 264 in 4b5a92e
For env
no_proxy
, according to CURLOPT_NOPROXY explained, it should support domains, IPv4, IPv6 and thelocalhost
. However, currentget_environment_proxies
function implementation only supports domains correctly as it always adds wildcard*
in front of thehostname
.I encountered error when my environment
no_proxy
includes IPv6 address like::1
. It is wrongly transformed intoall://*::1
and causes urlparse error since the _urlparse.py parses the:1
as port.To fix this issue, I looked into this repo and suggest handling the
no_proxy
hostnames as domains, IPv4, IPv6 and thelocalhost
seperately. I have updated theget_environment_proxies
function in _utils.py and tested it.Replies and discussions are welcomed!