1
0
mirror of https://github.com/golang/go synced 2024-11-17 21:24:55 -07:00
go/doc
Andrew Gerrand bb54a855a9 net/http: handle Request.URL.RawPath in StripPrefix
The StripPrefix wrapper strips a prefix string from the request's
URL.Path field, but doesn't touch the RawPath field. This leads to the
confusing situation when StripPrefix handles a request with URL.RawPath
populated (due to some escaped characters in the request path) and the
wrapped request's RawPath contains the prefix but Path does not.

This change modifies StripPrefix to strip the prefix from both Path and
RawPath. If there are escaped characters in the prefix part of the
request URL the stripped handler serves a 404 instead of invoking the
underlying handler with a mismatched Path/RawPath pair.

This is a backward incompatible change for a very small minority of
requests; I would be surprised if anyone is depending on this behavior,
but it is possible. If that's the case, we could make a more
conservative change where the RawPath is trimmed if possible, but when
the prefix contains escaped characters then we don't 404 but rather send
through the invalid Path/RawPath pair as before.

Fixes #24366

Change-Id: I7030b8c183a3dfce307bc0272bba9a18df4cfe08
Reviewed-on: https://go-review.googlesource.com/c/go/+/233637
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2020-08-25 06:01:11 +00:00
..
articles doc/articles/wiki: add missing log import to net/http tutorial 2020-08-16 21:51:36 +00:00
codewalk
gopher doc/gopher: add model sheet 2018-07-18 04:00:10 +00:00
play
progs all: replace Replace(..., -1) with ReplaceAll(...) 2020-08-17 04:07:23 +00:00
asm.html doc, cmd/internal/obj/arm64: update the directives in the doc 2020-05-01 20:39:53 +00:00
cmd.html doc: remove extra br tags 2020-02-23 01:23:41 +00:00
contribute.html doc: fix typos and grammatical errors in contribute.html 2020-06-28 03:14:10 +00:00
debugging_with_gdb.html doc/debugging_with_gdb: fix the link of delve 2020-04-13 04:26:57 +00:00
diagnostics.html
editors.html doc/editors.html: update VS Code Go extension url 2020-07-08 13:59:06 +00:00
effective_go.html doc: add note about missing lock in sample code 2020-06-30 13:02:41 +00:00
gccgo_contribute.html
gccgo_install.html doc/gccgo: change gold build instructions to use Git repository 2020-06-15 19:05:29 +00:00
go1.1.html
go1.2.html
go1.3.html
go1.4.html
go1.5.html
go1.6.html
go1.7.html
go1.8.html
go1.9.html doc: rename HTML element IDs to avoid duplicates 2020-02-05 14:32:50 +00:00
go1.10.html all: avoid awkward wording from CL 236857 2020-06-08 21:36:04 +00:00
go1.11.html doc: rename HTML element IDs to avoid duplicates 2020-02-05 14:32:50 +00:00
go1.12.html
go1.13.html doc: rename HTML element IDs to avoid duplicates 2020-02-05 14:32:50 +00:00
go1.14.html doc/go1.14: crypto/tls.Config.NameToCertificate is deprecated 2020-06-26 17:32:19 +00:00
go1.15.html doc/go1.15: include behavior updates to the context package 2020-08-12 23:25:46 +00:00
go1.16.html net/http: handle Request.URL.RawPath in StripPrefix 2020-08-25 06:01:11 +00:00
go1.html
go1compat.html
go_faq.html doc/faq: fix a grammar mistake 2020-06-25 02:59:06 +00:00
go_mem.html doc/mem: remove unnecessary pre tags within same snippet 2020-03-03 09:28:34 +00:00
go_spec.html spec: add missing space in EBNF 2020-01-15 05:32:51 +00:00
go-logo-black.png
go-logo-blue.png
go-logo-white.png
help.html doc: add alt attribute to gopher image in help.html 2020-06-29 17:59:28 +00:00
ie.css
install-source.html doc: add riscv64 to ports list 2020-07-01 09:07:18 +00:00
install.html doc: update the minimum supported macOS version to 10.11 2020-04-01 18:26:02 +00:00
share.png
tos.html