1 回答

TA貢獻1874條經驗 獲得超12個贊
該Redirect::back()函數使用Referer客戶端(瀏覽器)指定的 HTTP 標頭中的 URL。
您可以像 一樣訪問此標頭值r.Header.Get("Referer"),但該http.Request類型還提供了一個Request.Referer()返回此Referer字段值的直接方法,該方法還處理其兩種可能的形式("Referer"和"Referrer")。
這是您可以模仿“返回”行為的方式:
func PostHandler(w http.ResponseWriter, r *http.Request) {
// Process form, then:
if rf := r.Referer(); rf != "" {
http.Redirect(w, r, rf, http.StatusSeeOther)
return
}
// No Referer specified, supply your own response
// or redirect to a default / home page
http.Redirect(w, r, "/", http.StatusSeeOther)
}
如果您想從許多處理程序中調用它,您可以在輔助函數中捕獲此功能:
func redirectBack(w http.ResponseWriter, r *http.Request) {
if rf := r.Referer(); rf != "" {
http.Redirect(w, r, rf, http.StatusSeeOther)
return
}
// No Referer specified, supply your own response
// or redirect to a default / home page
http.Redirect(w, r, "/", http.StatusSeeOther)
}
然后使用它:
func PostHandler(w http.ResponseWriter, r *http.Request) {
// Process form, then:
redirectBack(w, r)
}
- 1 回答
- 0 關注
- 152 瀏覽
添加回答
舉報