golang实现Location跳转⽅式
golang作为互联⽹时代的C语⾔,对⽹络的⽀持是⾮常友好的,最近想做个短⽹址转发使⽤,⾃然想到⽤Golang开发。
闲话少说,直接上源码:
package main
import (
"fmt"
"log"
"net/http"
)
func login(w http.ResponseWriter, r *http.Request) {
fmt.Print(fmt.Sprintf("%v+", r))
w.Header().Set("Cache-Control", "must-revalidate, no-store")
w.Header().Set("Content-Type", " text/html;charset=UTF-8")
w.Header().Set("Location", "wap.baidu/")//跳转地址设置
w.WriteHeader(307)//关键在这⾥!
}
func main() {
http.HandleFunc("/", login) //设置访问的路由
err := http.ListenAndServe(":9090", nil) //设置监听的端⼝
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
补充:Go获取Location重定向url
go本⾝不提供重定向的url,如果想要获取,只能从源码下⼿。
http.Get()接收到⼀个url后,会进⼀步确认,是否包含重定向url,如果包含,⾃动转到新的url,我们需要做的就是在这之前截取重定向url。
进⼊到http包中到函数:
//⾃⽤,保留url地址信息,头部⼤写进⾏暴露
var RedirectMy string //此⾏源码中没有,为⾃⼰添加
func defaultCheckRedirect(req *Request, via []*Request) error {免费分享源码的网址
//⾃⽤,将url根据需求进⾏组合
RedirectMy = "//"+req.URL.Host+req.URL.Path//此⾏源码中没有,为⾃⼰添加
if len(via) >= 10 {
return errors.New("stopped after 10 redirects")
}
return nil
}
从源码中可以看出,go本⾝⽀持10次重定向,超过10次便会报错。
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。如有错误或未考虑完全的地⽅,望不吝赐教。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论