我们可以通过RedirectTo/RedirectBack来实现页面之间的跳转,该功能通过Location Header实现。相关方法:

  1. func (r *Response) RedirectBack(code ...int)
  2. func (r *Response) RedirectTo(location string, code ...int)

RedirectTo

ReditectTo用以引导客户端跳转到指定的地址,地址可以是一个本地服务的相对路径,也可以是一个完整的HTTP地址。使用示例:

  1. package main
  2. import (
  3. "github.com/gogf/gf/v2/frame/g"
  4. "github.com/gogf/gf/v2/net/ghttp"
  5. )
  6. func main() {
  7. s := g.Server()
  8. s.BindHandler("/", func(r *ghttp.Request) {
  9. r.Response.RedirectTo("/login")
  10. })
  11. s.BindHandler("/login", func(r *ghttp.Request) {
  12. r.Response.Writeln("Login First")
  13. })
  14. s.SetPort(8199)
  15. s.Run()
  16. }

运行后,我们通过浏览器访问 http://127.0.0.1:8199/ 随后可以 发现浏览器立即跳转到了 http://127.0.0.1:8199/login 页面。

RedirectBack

RedirectBack用以引导客户端跳转到上一页面地址,上一页面地址是通过Referer Header获取的,一般来说浏览器客户端都会传递这一Header。使用示例:

  1. package main
  2. import (
  3. "github.com/gogf/gf/v2/frame/g"
  4. "github.com/gogf/gf/v2/net/ghttp"
  5. )
  6. func main() {
  7. s := g.Server()
  8. s.BindHandler("/page", func(r *ghttp.Request) {
  9. r.Response.Writeln(`<a href="/back">back</a>`)
  10. })
  11. s.BindHandler("/back", func(r *ghttp.Request) {
  12. r.Response.RedirectBack()
  13. })
  14. s.SetPort(8199)
  15. s.Run()
  16. }

运行后,我们通过浏览器访问 http://127.0.0.1:8199/page 点击页面的back连接 ,可以发现点击后页面随后又跳转了回来。