[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#42382: 26.3; url-http handling of Location redirection headers conta
From: |
Daniele Nicolodi |
Subject: |
bug#42382: 26.3; url-http handling of Location redirection headers containing whitespace |
Date: |
Thu, 16 Jul 2020 10:30:49 -0600 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
On 16-07-2020 10:08, Robert Pluim wrote:
>>>>>> On Wed, 15 Jul 2020 14:40:36 -0600, Daniele Nicolodi
>>>>>> <daniele@grinta.net> said:
>
> Daniele> In RFC 7231 the Location header is defined to carry a
> URI-reference.
> Daniele> According to RFC 3986 it should be percent-encoded and thus
> should not
> Daniele> contain spaces. However, there are HTTP server implementation
> (notably
> Daniele> nginx) that do not do that. While this is a bug in those HTTP
> server
> Daniele> implementations, I think Emacs should follow what most other
> HTTP client
> Daniele> implementatios (all the ones I tested) and use the content of the
> Daniele> Location header unmodified. Stripping of angle bracket quotes is
> Daniele> unnecessary as they are not valid according to the RFCs.
>
> Nor is embedded whitespace in the URI :-)
I don't understand this remark. Truncating at the first whitespace
character (current behavior) is a valid arbitrary decision for an
RFC-invalid URI-reference value. However, it is different from what all
other HTTP clients implement and it results in practical problems.
> Are you sure this won't break anything? ie are you sure there are 0
> server implementations out there that send angle brackets?
I don't see any reason why there should be angle brackets around the
value of a Location header and the current code or changelog or commit
messages does not provide a justification or a case where these have
been encountered. No other HTTP client I looked at does something like
this. I think there are many HTTP client implementations out there that
are more widely used and tested for interoperability than url-http.
> Iʼd be conservative, and just replace the truncation on whitespace
> with percent-encoding of said whitespace.
Why is percent-encoding better? The URI-reference value should not be
interpreted in any way, simply passed along. Again, all other HTTP
clients I looked at do not do this, or other manipulation of the header.
> Daniele> Also, accordingly to the RFCs, the location header may contain a
> Daniele> relative location. Thus the comment that suggest that such a
> response is
> Daniele> a bug in the server should be reworded.
>
> Daniele> The attached patches implement the proposed changes.
>
> The second patch is small enough that I think you can combine the two.
They are divided to provide justification for the changes in the commit
messages.
Thank you.
Daniele