Open benizl opened 2 years ago
Hi @benizl, Can you please recheck if it is just showing the error in your system. Because it is working completely fine in my mine.
Sorry for the slow response @ritikBhandari, I've been away from dev for a bit.
I still see
print(requests.Request('GET', 'http://[fe80::1:2:3:4%2561]').prepare().url) # > http://[fe80::1:2:3:4a]/
i.e. the 61
scope specifier, escaped with %25
as per RFC6874, gets incorrectly transformed in to the letter a
. Since the above note, the help output is unchanged except requests.version == 2.28.2
and urllib3.version == 1.26.15
Any update on this issue? I'm also seeing an issue when using iDRAC IPv6 link local address to make Redfish calls using requests module, returns 400 status code. If i use iDRAC IPv6 address to make the same Redfish call no issues. Also i can use iDRAC link local address to make the same Redfish call using curl command no issues. Issue only exists when using requests module.
Thanks
Same here, getting messages like Failed to resolve 'fe80::6321:2df2:88b:d3b6%25enp0s3
when tryong to connect vie HTTPS.
Issue #5775 notes that IPv6 Zone Identifiers are not parsed correctly when the Zone ID is itself a valid percent-encoded character from the
UNRESERVED_SET
. That issue was incorrectly closed as a duplicate of #5126, in fact #5126 is to do with a different, resolved, bug in urllib. This ticket here is a duplicate of #5775 but commenting on that ticket is now locked.IPv6 addresses can have the form
fe80::1:2:3:4%zone
wherezone
is any alphanumeric sequence and is platform-dependent. In order to address their use in URLs, where the%zone
could be interpreted as a percent-escaped character, RFC6874 requires the%
to be replaced with its own percent-escaped representation%25
, e.g.http://[fe80::1:2:3:4%25zone
.In
requests
, this is not enough to protect the Zone ID in the URL, if the zone is a valid percent-escaped character from theUNRESERVED_SET
. Specifically,url.py::_normalize_host
removes the RFC6874 sequence and replaces it with a simple%
, then the round trip throughquote/unquote_reserved
inutils.py::requote_uri
called fromPreparedRequest::prepare_url
transforms the Zone ID in to the percent-escaped character anyway.Note that doubly escaping the percent works, but the URL is then neither intuitive nor RFC-compliant.
Expected Result
Actual Result
System Information