From: Jasper St. Pierre Date: Mon, 26 Jul 2010 18:22:42 GMT Subject: Re: URL decoding changed semantics of + in URLs Message-ID: In-Reply-To: Where is '+' used in the URL context? I don't see that it's a replacement for '+' aside from formencoded, which is from CGI, not HTTP or the URI spec. I also can't access something called "test 2.txt" from Apache with "http://localhost/test+2.txt", so I don't think it's unescaping the '+'. I don't think we should do anything about the '+' case, except where used in formencoded parameters (aka the "query string"), where it is used. On Mon, Jul 26, 2010 at 1:57 PM, Ævar Arnfjörð Bjarmason wrote: > On Mon, Jul 26, 2010 at 15:40, Jeff King wrote: > >> As Jasper noted, "+" is a reserved character, which means "gtk+" >> probably _should_ be escaped. But clearly it doesn't happen in practice, >> and I am more interested in not breaking current use than in nitpicking >> with a standard. > > Reserved characters only have to be escaped in certain contexts, from > RFC 2396: > >   Many URI include components consisting of or delimited by, certain >   special characters.  These characters are called "reserved", since >   their usage within the URI component is limited to their reserved >   purpose.  If the data for a URI component would conflict with the >   reserved purpose, then the conflicting data must be escaped before >   forming the URI. > >      reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | >                    "$" | "," > > E.g. @ is special in the hostname part (http://user@example.org), but > writing http://example.org/Git@Big%20companies:%20A%20Study is just > fine. > > Which is why curl passes it along literally, it *can* escape them, and > real webservers like Apache handle reserved characters equivalently > (in their unreserved contexts) whether they're escaped or not, but the > git-daemon at git.gnome.org evidently doesn't implement RFC 2396 > carefully enough. > > So we shouldn't escape + for backwards compatibility and because it's > not necessary, but we should probably also fix git-daemon to accept > both forms if that hasn't been done already. >