import (
"fmt"
"strings"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
//首字母大小写不区分 单词与单词之间用-连接,并且获取的是第一个value
//这是用于获取一个请求头
// fmt.Println(c.GetHeader("User-Agent"))
// fmt.Println(c.GetHeader("user-agent"))
// fmt.Println(c.GetHeader("user-Agent"))
// fmt.Println(c.GetHeader("User-agent"))
// 获取所有请求头,Header是一个普通的map[string]
// fmt.Println(c.Request.Header)
// 获取单个请求头,和c.GetHeader("User-Agent")的区别是这里必须分大小写,因为相当于取map[string]这个map的值
fmt.Println(c.Request.Header["User-Agent"])
//这个就可以免大小写
fmt.Println(c.Request.Header.Get("User-Agent"))
c.JSON(200, gin.H{
"msg": "成功",
})
})
// 请求头的各种获取方式,如何让爬虫和普通用户区别对待
r.GET("/index", func(c *gin.Context) {
s := c.GetHeader("user-agent")
// 1、用正则去匹配
// 2、字符串的包含匹配
if strings.Contains(s, "python") {
//爬虫来了,如果响应头里含有python就是爬虫
c.JSON(0, gin.H{
"gun": "这是响应给爬虫的数据",
})
return
}
c.JSON(0, gin.H{
"data": "这是响应给用户的数据",
})
})
// 设置响应头
r.GET("/res", func(c *gin.Context) {
//设置响应头
c.Header("Token", "this is xiangyingtou")
//如果改了Content-Type,浏览器就不会认为你是json了,很多时候浏览器下载奇怪东西就是请求头的问题
// c.Header("Content-Type", "this is xiangyingtou")
c.JSON(0, gin.H{
"data": "看看响应头",
})
})
r.Run(":9090")
}