net/http: document outgoing Host header origin in more places #34124
Comments
…34124 The comment actually says it will prefer the Host header if is that given. But it does not.
Change https://golang.org/cl/193600 mentions this issue: |
/cc @bradfitz |
We can document the current behavior more, but I'm very reluctant to change the behavior more at this point. We currently have two fields we consult for the Host header. First Request.Host, else Request.URL.Host. This is documented on Request.URL: https://golang.org/pkg/net/http/#Request.URL
We could document that more on Request.Header and Request.Host too. You're proposing to add a third level in there (Request.Header["Host"]) between the Request.Host and Request.URL.Host. That might be intuitive to some, but it's also just more complexity and compatibility support to maintain going forward. (And might catch other implementations by surprise?) So we probably shouldn't do anything. I'd accept a documentation change, though. |
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
https://play.golang.org/p/O5Y6dEi_hqx
What did you expect to see?
I expected to see that setting a
Host:
header actually sends hosts and setsreq.Host
map[Accept-Encoding:[gzip] Host:[example.com] User-Agent:[My Test User Agent 1.1]]
What did you see instead?
I see that it just sets Hosts from url and uses
req.Host
if exists.map[Accept-Encoding:[gzip] Host:[127.0.0.1:2] User-Agent:[My Test User Agent 1.1]]
I see some closed issues, but I have a few more words about it, It is documented that we need to set .Host to send host header and there are few more headers that calculated in request.write but for example
User-Agent
is being overwritten but it does not do this for Host.https://github.com/golang/go/blob/master/src/net/http/request.go#L553 on this comment we see that it says
but it does not even look at host header.
The text was updated successfully, but these errors were encountered: