Я создал простой сервер http2,
Если я отправляю запрос на него с помощью curl, он отвечает некоторыми заголовками, хотя я не установил их в явном виде. Как я могу получить к ним доступ внутри функции обработки запросов (скажем, hello)? Мой код (я никогда раньше не использовал golang)
server.go
package main
import (
"net/http"
"strings"
"fmt"
"github.com/gorilla/mux"
"golang.org/x/net/http2"
)
func sayHello(w http.ResponseWriter, r *http.Request) {
message := r.URL.Path
message = strings.TrimPrefix(message, "/")
message = "Hello " + message
w.Header().Set("myFirst", "golangQuestion")
w.Write([]byte(message))
for k, v := range w.Header() {
fmt.Println("[RESPONSE][Header]", k,":", v)
}
}
func main() {
router := mux.NewRouter()
router.PathPrefix("/").HandlerFunc(sayHello) // catch everything else rule
var srv = &http.Server{
Addr: "127.0.0.1:8081",
}
http2.ConfigureServer(srv, nil)
srv.Handler = router
sslCert := "./ssl.cert"
sslKey := "./ssl.key"
if err := srv.ListenAndServeTLS(sslCert, sslKey); err != nil {
panic(err)
}
}
Отправка запроса:
завиток - головка - незащищенная https://127.0.0.1:8081
HTTP/1.1 200 OK
Myfirst: golangQuestion
Date: Tue, 18 Jun 2019 09:18:29 GMT
Content-Length: 6
Content-Type: text/plain; charset=utf-8
Я вижу, что некоторые заголовки отправляются обратно, тот, который я установил явно, также получен, но вывод
иди запусти server.go
[RESPONSE][Header] Myfirst : [golangQuestion]
Как я могу получить доступ к другим заголовкам, которые не были явно установлены, но также получены curl? Я перебрал w.Headers , но он не содержал неявно установленных заголовков
for k, v := range w.Header() {
fmt.Println("[RESPONSE][Header]", k,":", v)
}
Я ожидаю, что выходные данные go run server.go должны выглядеть примерно так:
[RESPONSE][Header] Myfirst : [golangQuestion]
[RESPONSE][Header] Date: [2019.02.12 ]
[RESPONSE][Header] Content-Length: [6]