ReverseProxy doesn't re-set the Request's Host field, only
Request.URL.Host.
The HTTP/2 client prefers Request.Host over Request.URL.Host, so this
results in the request being sent back to the host that originally
accepted the request.
This results in an infinite redirect (and consumption of many connections to
itself).
See Issue golang/go#28168 for details.
Replace it with a simple proxy that drops all the headers (except
Content-Type).
I tried setting the proxy.Director, but it still didn't work. Could do
with some more investigation.
Fixes golang/go#28134.
Change-Id: I5051ce72a379dcacfbe8484f58f8cf7d9385024d
Reviewed-on: https://go-review.googlesource.com/c/141718
Run-TryBot: Chris Broadfoot <cbro@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| analysis | ||
| dl | ||
| env | ||
| proxy | ||
| redirect | ||
| short | ||
| static | ||
| util | ||
| vfs | ||
| README.md | ||
| cmdline.go | ||
| cmdline_test.go | ||
| corpus.go | ||
| dirtrees.go | ||
| dirtrees_test.go | ||
| format.go | ||
| godoc.go | ||
| godoc17_test.go | ||
| godoc_test.go | ||
| index.go | ||
| index_test.go | ||
| linkify.go | ||
| meta.go | ||
| page.go | ||
| parser.go | ||
| pres.go | ||
| search.go | ||
| server.go | ||
| server_test.go | ||
| snippet.go | ||
| spec.go | ||
| spec_test.go | ||
| spot.go | ||
| tab.go | ||
| template.go | ||
| versions.go | ||
| versions_test.go | ||
README.md
godoc
This directory contains most of the code for running a godoc server. The executable lives at golang.org/x/tools/cmd/godoc.
Development mode
In production, CSS/JS/template assets need to be compiled into the godoc binary. It can be tedious to recompile assets every time, but you can pass a flag to load CSS/JS/templates from disk every time a page loads:
godoc -templates=$GOPATH/src/golang.org/x/tools/godoc/static -http=:6060
Recompiling static assets
The files that live at static/style.css, static/jquery.js and so on are not
present in the final binary. They are placed into static/static.go by running
go generate. So to compile a change and test it in your browser:
-
Make changes to e.g.
static/style.css. -
Run
go generate golang.org/x/tools/godoc/staticsostatic/static.gopicks up the change. -
Run
go install golang.org/x/tools/cmd/godocso the compiledgodocbinary picks up the change. -
Run
godoc -http=:6060and view your changes in the browser. You may need to disable your browser's cache to avoid reloading a stale file.