golang 实现Location跳转方式


Posted in Golang onMay 02, 2021

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", "http://wap.baidu.com/")//跳转地址设置
 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次便会报错。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
go语言-在mac下brew升级golang
Apr 25 Golang
golang 实现Location跳转方式
May 02 Golang
golang 比较浮点数的大小方式
May 02 Golang
Go标准容器之Ring的使用说明
May 05 Golang
浅谈golang package中init方法的多处定义及运行顺序问题
May 06 Golang
解决goland 导入项目后import里的包报红问题
May 06 Golang
使用golang编写一个并发工作队列
May 08 Golang
Golang 获取文件md5校验的方法以及效率对比
May 08 Golang
Golang的继承模拟实例
Jun 30 Golang
Golang 实现 WebSockets 之创建 WebSockets
Apr 24 Golang
Python测试框架pytest核心库pluggy详解
Aug 05 Golang
Go gorilla securecookie库的安装使用详解
Aug 14 Golang
解决golang post文件时Content-Type出现的问题
May 02 #Golang
对Golang中的FORM相关字段理解
May 02 #Golang
解决go在函数退出后子协程的退出问题
Apr 30 #Golang
Go语言 go程释放操作(退出/销毁)
golang DNS服务器的简单实现操作
golang slice元素去重操作
Apr 30 #Golang
Golang中interface{}转为数组的操作
Apr 30 #Golang
You might like
phpize的深入理解
2013/06/03 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
axios基本入门用法教程
2017/03/25 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
跟老齐学Python之折腾一下目录
2014/10/24 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python中and和or如何使用
2020/05/28 Python
Django url 路由匹配过程详解
2021/01/22 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
2014年机关植树节活动方案
2014/02/27 职场文书
内勤主管岗位职责
2014/04/03 职场文书
见义勇为事迹材料
2014/12/24 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏