代码拉取完成,页面将自动刷新
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()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。