猿问

在go中,如何检查写入http.ResponseWriter的http响应?

我可能遗漏了一些明显的东西,但我正在尝试调试由我的 go 服务器编写的 HTTP 响应。


我看到有httputil.DumpResponse可用,但它需要一个 http.Response 对象,而我可用的是 http.ResponseWriter


有没有办法从 http.ResponseWriter 中提取 http.Response 以便我可以检查对控制台或日志的响应内容?


语境:


我正在使用https://github.com/RangelReale/osin编写一个简单的服务器端身份验证,它是默认示例,但不明白为什么前端(使用http://ember-simple-auth.com)将失败的身份验证(错误的密码)解释为成功。


这是片段:


r = mux.NewRouter()

r.HandleFunc("/token", func (w http.ResponseWriter, r *http.Request) {


    fmt.Printf("r.HandleFunc /token\n")


    resp := server.NewResponse()

    defer resp.Close()


    r.ParseForm()


    grantType := r.FormValue("grant_type")

    username := r.FormValue("username")

    password := r.FormValue("password")

    fmt.Printf("/token : grantType=%s  username=%s  password=%s\n", grantType, username, password)


    if ar := server.HandleAccessRequest(resp, r); ar != nil {

        if username == "user" && password == "correct-password" {

            ar.Authorized = true

        } else {

            ar.Authorized = false

        }

        server.FinishAccessRequest(resp, r, ar)

    }


    osin.OutputJSON(resp, w, r)


    // Debug - doesn't work yet

    dump, err := httputil.DumpResponse(w, true)

    if err != nil {

        fmt.Printf("%s\n", dump)

    }

});

http.Handle("/token", r)


月关宝盒
浏览 196回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答