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各时间字符串使用解析
Apr 02 Golang
go语言map与string的相互转换的实现
Apr 07 Golang
Golang 正则匹配效率详解
Apr 25 Golang
go语言中切片与内存复制 memcpy 的实现操作
Apr 27 Golang
goland 恢复已更改文件的操作
Apr 28 Golang
golang 实现菜单树的生成方式
Apr 28 Golang
Go语言 go程释放操作(退出/销毁)
Apr 30 Golang
golang 实现Location跳转方式
May 02 Golang
golang 比较浮点数的大小方式
May 02 Golang
goland设置颜色和字体的操作
May 05 Golang
聊聊golang中多个defer的执行顺序
May 08 Golang
Golang 获取文件md5校验的方法以及效率对比
May 08 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
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
python类继承用法实例分析
2014/10/10 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
深入理解Python异常处理的哲学
2019/02/01 Python
python aiohttp的使用详解
2019/06/20 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Django分页功能的实现代码详解
2019/07/29 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
个人求职信范文分享
2013/12/13 职场文书
料理师求职信
2014/01/30 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
主管竞聘书范文
2014/03/31 职场文书
大学辅导员述职报告
2015/01/10 职场文书
亲属关系公证书样本
2015/01/23 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
撤诉状格式范本
2015/05/19 职场文书
python关于集合的知识案例详解
2021/05/30 Python
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers