Pau*_*ker 2 redirect http go laravel server
使用Laravel时,我真的很感激能够使用:
return Redirect::back();
Run Code Online (Sandbox Code Playgroud)
POST请求后返回上一个URL .
在Go中有一个简单的内置方法吗?
http.Redirect(w, r, backURL, http.StatusSeeOther)
Run Code Online (Sandbox Code Playgroud)
backURLPOST请求的URL 在哪里.
我查看net/http并搜索了SE和谷歌,但我没有提出任何建议.如果没有一个简单的方法,我会很感激任何指向Go的惯用方法.
该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)
}
Run Code Online (Sandbox Code Playgroud)
如果要从许多处理程序中调用它,可以在辅助函数中捕获此功能:
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)
}
Run Code Online (Sandbox Code Playgroud)
然后使用它:
func PostHandler(w http.ResponseWriter, r *http.Request) {
// Process form, then:
redirectBack(w, r)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |