2017-09-03 69 views
3

如果我收到一個類型爲http.Request的請求,我該如何讀取特定頭文件的值?在這種情況下,我想從請求頭中取出一個jwt令牌的值。如何從golang中的http請求中讀取標頭?

+4

你試過[閱讀文檔(https://golang.org/pkg/net/http/#Request.Header)? – tkausl

+0

是的,我有。我一直試圖用括號代替括號,謝謝。 –

回答

9

可以使用r.Header.Get

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

謝謝!我r.Header [「標題」也適用於我。 –

3
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/將打印在瀏覽器中輸出。