如何从 Go gin 上下文中获取请求主机?
How to get request host from Go gin context?
我正在尝试从 gin 上下文中获取请求主机,但我发现的唯一接近的是 Context.ClientIP()
。我正在处理一个动态 IP,所以我想在这里获取主机名,而不是根据允许列表检查它以设置 CORS header。如何获取客户端主机名?
既然你想用它做 CORS,你可以从源头拿它header。它本质上是发出请求的网站的主机。它实际上不是客户的主机。但是对于 CORS,你想使用 origin。因此,您设置 header Access-Control-Allow-Origin
.
origin := c.Request.Header.Get("Origin")
允许 CORS 的简单处理程序可能如下所示。
allowList := map[string]bool{
"https://www.google.com": true,
"https://www.yahoo.com": true,
}
r.GET("/", func(c *gin.Context) {
if origin := c.Request.Header.Get("Origin"); allowList[origin] {
c.Header("Access-Control-Allow-Origin", origin)
}
c.JSON(200, gin.H{"message": "ok"})
})
我正在尝试从 gin 上下文中获取请求主机,但我发现的唯一接近的是 Context.ClientIP()
。我正在处理一个动态 IP,所以我想在这里获取主机名,而不是根据允许列表检查它以设置 CORS header。如何获取客户端主机名?
既然你想用它做 CORS,你可以从源头拿它header。它本质上是发出请求的网站的主机。它实际上不是客户的主机。但是对于 CORS,你想使用 origin。因此,您设置 header Access-Control-Allow-Origin
.
origin := c.Request.Header.Get("Origin")
允许 CORS 的简单处理程序可能如下所示。
allowList := map[string]bool{
"https://www.google.com": true,
"https://www.yahoo.com": true,
}
r.GET("/", func(c *gin.Context) {
if origin := c.Request.Header.Get("Origin"); allowList[origin] {
c.Header("Access-Control-Allow-Origin", origin)
}
c.JSON(200, gin.H{"message": "ok"})
})