Fix percent-encoded username/password decoding for Basic Auth (#1623) #1685
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.
Problem
HTTPie fails to decode percent-encoded characters in the username/password when they are included in the URL.
For example:
bash
http https://u%40d:1%3d2%3f@httpbin.org/basic-auth/u%40d/1%3d2%3f
returns a 401 Unauthorized.
reproduction specifications

OS: windows 11
pip version 25.3
python version 3.14
http version 3.2.4
steps followed to reproduce:
windows button and write cmd
in the command line window write : pip install httpie
in the HTTPie command run: http https://u%40d:1%3d2%3f@httpbin.org/basic-auth/u%40d/1%3d2%3f
result as shown in the screenshot:
run http --debug https://u%40d:1%3d2%3f@httpbin.org/basic-auth/u%40d/1%3d2%3f


to show details according to issue steps :
expected behavior should be same as running curl https://u%40d:1%3d2%3f@httpbin.org/basic-auth/u%40d/1%3d2%3f

curl successful output :
unlike what's mentioned in the issue documentation using the flag --auth doesn't give the desired output either
curl decodes the unserinfo before building the authorization header and that's why it works