如何从 golang 中的 http 请求中读取标头?

新手上路,请多包涵

如果我收到类型为 http.Request 的请求,我如何读取特定标头的值?在这种情况下,我想从请求标头中提取 jwt 令牌的值。

原文由 Ayman Elmubark 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 829
2 个回答

您可以使用 r.Header.Get

 func yourHandler(w http.ResponseWriter, r *http.Request) {
    ua := r.Header.Get("User-Agent")
    ...
}

原文由 nbari 发布,翻译遵循 CC BY-SA 3.0 许可协议

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("localhost:8000", nil))
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "%s %s %s \n", r.Method, r.URL, r.Proto)
    //Iterate over all header fields
    for k, v := range r.Header {
        fmt.Fprintf(w, "Header field %q, Value %q\n", k, v)
    }

    fmt.Fprintf(w, "Host = %q\n", r.Host)
    fmt.Fprintf(w, "RemoteAddr= %q\n", r.RemoteAddr)
    //Get value for a specified token
    fmt.Fprintf(w, "\n\nFinding value of \"Accept\" %q", r.Header["Accept"])
}


从浏览器连接到 http://localhost:8000/ 将在浏览器中打印输出。

原文由 Ravi R 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题