亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從反向代理獲取響應標頭

如何從反向代理獲取響應標頭

Go
30秒到達戰場 2023-07-31 17:27:44
如何檢測反向代理中的響應標頭并對其做出反應?我正在編寫一個注入反向代理的中間件方法。我確認正在調用中間件。服務器設置一個X-SERVER-VAR值為 的響應標頭Foo。我需要根據該值檢測并運行一些代碼。我以為我已經閱讀了 ResponseWriter,認為服務器響應應該包含該值,但沒有記錄任何內容。func SessionHandler(next http.Handler) http.Handler {    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {        log.Printf(w.Header().Get("X-SERVER-VAR"))        next.ServeHTTP(w, r)    })}我用來github.com/gorilla/mux附加這個中間件處理程序。我正在使用類似于下面的代碼來設置所有內容(針對這個問題進行了簡化)。func newProxy(remote string) http.Handler {    proxyurl, err := url.Parse(remote)    if err != nil {        panic(err)    }    proxy := httputil.NewSingleHostReverseProxy(proxyurl)    return proxy}func main() {    r := mux.NewRouter()    r.Use(SessionHandler)    proxy := newProxy("https://www.example.com/")    r.PathPrefix("/").Handler(proxy)    log.Fatal(http.ListenAndServe(":9001", r))}如果中間件無法實現,是否可以通過其他方式檢測來自服務器的響應標頭?
查看完整描述

1 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

您不能期望在設置響應標頭之前讀取它們。


改變這個:


func SessionHandler(next http.Handler) http.Handler {

    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

        log.Printf(w.Header().Get("X-SERVER-VAR"))

        next.ServeHTTP(w, r)

    })

}

對此:


func SessionHandler(next http.Handler) http.Handler {

    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

        next.ServeHTTP(w, r)

        log.Printf(w.Header().Get("X-SERVER-VAR"))

    })

}


查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號