【发布时间】:2018-11-16 14:42:45
【问题描述】:
http.Request类型中字段Response的注释如下。
// Response is the redirect response which caused this request
// to be created. This field is only populated during client
// redirects.
Response *Response
但是,在我看来,这个字段在请求期间没有被填充,因为它暗示它是。考虑以下示例:
package main
import (
"net/http"
"log"
"fmt"
)
func handleA(writer http.ResponseWriter, request *http.Request) {
http.Redirect(writer, request, "/b", http.StatusSeeOther)
}
func handleB(writer http.ResponseWriter, request *http.Request) {
fmt.Println(request.Response)
}
func main() {
http.HandleFunc("/a", handleA)
http.HandleFunc("/b", handleB)
log.Fatal(http.ListenAndServe(":8080", nil))
}
如果我编译并运行此代码并导航到localhost:8080/a,那么我会被重定向到localhost:8080/b,并且服务器会将<nil> 打印到控制台。但它不应该打印出非nil 值吗,因为请求是重定向的结果?
【问题讨论】:
-
"此字段仅在客户端重定向期间填充。"这是服务器代码。
标签: go webserver httprequest httpresponse http-redirect