dongxi1965
2017-09-03 07:49
浏览 1.4k
已采纳

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

If I receive a request of type http.Request, how can I read the value of a specific header? In this case I want to pull the value of a jwt token out of the request header.

图片转代码服务由CSDN问答提供 功能建议

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • doushan6692 2017-09-03 10:03
    已采纳

    You can use the r.Header.Get:

    func yourHandler(w http.ResponseWriter, r *http.Request) {
        ua := r.Header.Get("User-Agent")
        ...
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dqq9695 2017-09-03 08:56
    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 
    ", 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
    ", k, v)
        }
    
        fmt.Fprintf(w, "Host = %q
    ", r.Host)
        fmt.Fprintf(w, "RemoteAddr= %q
    ", r.RemoteAddr)
        //Get value for a specified token
        fmt.Fprintf(w, "
    
    Finding value of \"Accept\" %q", r.Header["Accept"])
    }
    

    Connecting to http://localhost:8000/ from a browser will print the output in the browser.

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题