1 Star 2 Fork 0

haming123 / wego

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
web_request.go 1.84 KB
一键复制 编辑 原始数据 按行查看 历史
haming 提交于 2022-02-10 15:37 . first commit
package wego
import (
"net"
"net/http"
"net/url"
"strings"
)
type WebRequest struct {
*http.Request
ctx *WebContext
}
func (this *WebRequest) Method() string {
request := this.Request
return request.Method
}
func (this *WebRequest) URI() string {
request := this.Request
return request.RequestURI
}
func (this *WebRequest) URL() string {
request := this.Request
return request.URL.Path
}
func (this *WebRequest) GetHeader(key string) string {
request := this.Request
return request.Header.Get(key)
}
func (this *WebRequest) Referer() string {
return this.GetHeader("Referer")
}
func (this *WebRequest) ContentType() string {
return this.GetHeader("Content-Type")
}
func (this *WebRequest) UserAgent() string {
return this.GetHeader("User-Agent")
}
func (this *WebRequest) Cookie(name string) (string, error) {
request := this.Request
cookie, err := request.Cookie(name)
if err != nil {
return "", err
}
val, _ := url.QueryUnescape(cookie.Value)
return val, nil
}
func (this *WebRequest) Host() string {
request := this.ctx.Input.Request
host, _, err := net.SplitHostPort(request.Host)
if err == nil {
return host
}
return "localhost"
}
func (this *WebRequest) RemoteIP() string {
request := this.Request
remote_addr := strings.TrimSpace(request.RemoteAddr)
ip, _, err := net.SplitHostPort(remote_addr)
if err != nil {
return ""
}
return ip
}
func (this *WebRequest) getIpFromHeader(header string) string {
str := this.GetHeader(header)
if str == "" {
return ""
}
items := strings.Split(str, ",")
ip_str := strings.TrimSpace(items[0])
ip, _, err := net.SplitHostPort(ip_str)
if err != nil {
return ""
}
return ip
}
func (this *WebRequest) ClientIP() string {
for _, header := range this.ctx.engine.IPHeaders {
ip := this.getIpFromHeader(header)
if ip != "" {
return ip
}
}
return this.RemoteIP()
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/haming123/wego.git
git@gitee.com:haming123/wego.git
haming123
wego
wego
main

搜索帮助

344bd9b3 5694891 D2dac590 5694891