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)
backURL
POST请求的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 次 |
最近记录: |