Go 可以轻松模拟 Laravel 的 return Redirect::back() 的行为吗?

在使用Laravel时,我非常感谢能够使用:

return Redirect::back();

请求后返回上一个 URL POST

在Go中是否有一种简单的内置方法可以做到这一点?

http.Redirect(w, r, backURL, http.StatusSeeOther)

backURL发出 POST 请求的 URL在哪里。

我浏览net/http并搜索了 SE 和谷歌,但我没有找到任何东西。如果以一种简单的方式失败,我将不胜感激任何指向在Go中执行此操作的惯用方式的指针。


森栏
浏览 136回答 1
1回答

HUWWW

该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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go