本文整理汇总了Golang中github.com/cosiner/zerver.Request类的典型用法代码示例。如果您正苦于以下问题:Golang Request类的具体用法?Golang Request怎么用?Golang Request使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Request类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: VerifyFor
func (x *Xsrf) VerifyFor(req zerver.Request) bool {
m := req.ReqMethod()
if !x.FilterGet && (m == zerver.METHOD_GET || m == zerver.METHOD_HEAD || m == zerver.METHOD_OPTIONS) {
return true
}
token := req.GetHeader(_HEADER_XSRFTOKEN)
if token == "" {
token = req.GetHeader(_HEADER_CSRFTOKEN)
if token == "" {
token = req.Vars().QueryVar(_XSRF_PARAM_NAME)
if token == "" {
return false
}
}
}
data := x.verify(unsafe2.Bytes(token))
if data != nil {
x.Pool.Put(data)
t, ip := x.TokenInfo.Unmarshal(data)
return t != -1 &&
t+x.Timeout >= time2.Now().Unix() &&
ip == http2.IpOfAddr(req.RemoteAddr())
}
return false
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:28,代码来源:xsrf.go
示例2: filter
func (c *CORS) filter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
headers := resp.Headers()
origin := "*"
if !c.allowAll {
origin = req.GetHeader(_CORS_ORIGIN)
if !c.allow(origin) {
resp.StatusCode(http.StatusForbidden)
return
}
}
headers.Set(_CORS_ALLOWORIGIN, origin)
headers.Set(_CORS_ALLOWMETHODS, c.methods)
headers.Set(_CORS_ALLOWHEADERS, c.headers)
headers.Set(_CORS_ALLOWCREDENTIALS, c.allowCredentials)
if c.exposeHeaders != "" {
headers.Set(_CORS_EXPOSEHEADERS, c.exposeHeaders)
}
if c.preflightMaxage != "" {
headers.Set(_CORS_MAXAGE, c.preflightMaxage)
}
chain(req, resp)
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:25,代码来源:cors.go
示例3: CreateFor
func (x *Xsrf) CreateFor(req zerver.Request) ([]byte, error) {
bs, err := x.TokenInfo.Marshal(time2.Now().Unix(), http2.IpOfAddr(req.RemoteAddr()))
if err == nil {
return x.sign(bs), nil
}
return nil, err
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:8,代码来源:xsrf.go
示例4: CreateFor
func (x *Xsrf) CreateFor(req zerver.Request) ([]byte, error) {
bs, err := x.TokenInfo.Marshal(time2.Now().Unix(), req.RemoteIP(), req.UserAgent())
if err == nil {
return x.sign(bs), nil
}
return nil, err
}
开发者ID:snowsnail,项目名称:zerver,代码行数:8,代码来源:xsrf.go
示例5: globalFilter
func globalFilter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
status := resp.StatusCode(0)
if status == http.StatusNotFound {
resp.Headers().Set("Location", path+"/options?from="+url.QueryEscape(req.URL().Path))
resp.StatusCode(http.StatusMovedPermanently)
} else if status == http.StatusMethodNotAllowed {
io2.WriteString(resp, "The pprof interface only support GET request\n")
} else {
chain(req, resp)
}
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:11,代码来源:monitoring.go
示例6: Filter
func (j *JWTAuth) Filter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
if tokstr, basic := req.Authorization(); !basic && tokstr != "" {
if tok, err := j.JWT.Parse(tokstr); err == nil {
req.SetAttr(j.AuthTokenAttrName, tok)
chain(req, resp)
return
}
}
resp.ReportUnauthorized()
}
开发者ID:VicentLiu,项目名称:zerver,代码行数:11,代码来源:auth_jwt.go
示例7: globalFilter
func globalFilter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
resp.SetContentType("text/plain", nil)
if resp.Status() == http.StatusNotFound {
resp.SetHeader("Location", path+"/options?from="+url.QueryEscape(req.URL().Path))
resp.ReportMovedPermanently()
} else if resp.Status() == http.StatusMethodNotAllowed {
resp.WriteString("The pprof interface only support GET request\n")
} else {
chain(req, resp)
}
}
开发者ID:fanbuchi,项目名称:zerver,代码行数:12,代码来源:monitoring.go
示例8: Create
// Create xsrf token, used as zerver.HandleFunc
func (x *Xsrf) Create(req zerver.Request, resp zerver.Response) {
tokBytes, err := x.CreateFor(req)
if err == nil {
resp.ReportServiceUnavailable()
return
}
if req.Method() == "POST" {
resp.ReportCreated()
}
defer x.Pool.Put(tokBytes)
x.logger.Warnln(resp.Send("tokBytes", tokBytes))
}
开发者ID:snowsnail,项目名称:zerver,代码行数:15,代码来源:xsrf.go
示例9: Handle
func (h *Handler) Handle(req zerver.Request, resp zerver.Response) {
req.Wrap(func(req *http.Request, shouldClose bool) (r *http.Request, c bool) {
r, c = req, shouldClose
err := req.ParseMultipartForm(h.MaxMemory)
if err != nil {
handle.SendErr(resp, handle.BadRequest(err))
return
}
if req.MultipartForm == nil || req.MultipartForm.File == nil {
handle.SendErr(resp, h.ErrNoFile)
return
}
files, has := req.MultipartForm.File[h.FileKey]
if !has || len(files) == 0 {
handle.SendErr(resp, h.ErrNoFile)
return
}
file := convertFileHandler(files[0])
if !h.isSuffixSupported(filepath.Ext(file.Filename)) {
handle.SendErr(resp, h.ErrNonImage)
return
}
if file.Size() > h.MaxSize {
handle.SendErr(resp, h.ErrTooLarge)
return
}
fd, err := file.Open()
if err != nil {
handle.SendErr(resp, handle.BadRequest(err))
return
}
defer fd.Close()
path, err := h.SaveImage(fd)
if err != nil {
handle.SendErr(resp, err)
return
}
resp.Send(h.PathKey, path)
return
})
}
开发者ID:winiceo,项目名称:zerver,代码行数:49,代码来源:image.go
示例10: Create
// Create xsrf token, used as zerver.HandleFunc
func (x *Xsrf) Create(req zerver.Request, resp zerver.Response) {
tokBytes, err := x.CreateFor(req)
if err == nil {
resp.StatusCode(http.StatusServiceUnavailable)
return
}
if req.ReqMethod() == "POST" {
resp.StatusCode(http.StatusCreated)
}
defer x.Pool.Put(tokBytes)
err = resp.Send(Token{string(tokBytes)})
if err != nil {
x.log.Error(log.M{"msg": "send xsrf token", "err": err.Error()})
}
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:18,代码来源:xsrf.go
示例11: Compress
func Compress(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
encoding := req.AcceptEncodings()
if strings.Contains(encoding, zerver.ENCODING_GZIP) {
resp.SetContentEncoding(zerver.ENCODING_GZIP)
resp.Wrap(gzipWrapper)
} else if strings.Contains(encoding, zerver.ENCODING_DEFLATE) {
resp.SetContentEncoding(zerver.ENCODING_DEFLATE)
resp.Wrap(flateWrapper)
} else {
chain(req, resp)
return
}
chain(req, resp)
resp.RemoveHeader("Content-Length")
}
开发者ID:fanbuchi,项目名称:zerver,代码行数:17,代码来源:compress.go
示例12: Compress
func Compress(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
encoding := req.GetHeader(zerver.HEADER_ACCEPTENCODING)
respHeaders := resp.Headers()
if strings.Contains(encoding, zerver.ENCODING_GZIP) {
respHeaders.Set(zerver.HEADER_CONTENTENCODING, zerver.ENCODING_GZIP)
resp.Wrap(gzipWrapper)
} else if strings.Contains(encoding, zerver.ENCODING_DEFLATE) {
respHeaders.Set(zerver.HEADER_CONTENTENCODING, zerver.ENCODING_DEFLATE)
resp.Wrap(flateWrapper)
} else {
chain(req, resp)
return
}
chain(req, resp)
respHeaders.Del(zerver.HEADER_CONTENTLENGTH)
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:18,代码来源:compress.go
示例13: Filter
func (r *Recovery) Filter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
defer func() {
e := recover()
if e == nil || r.NoStack {
return
}
resp.ReportInternalServerError()
buffer := bytes.NewBuffer(make([]byte, 0, r.Bufsize))
fmt.Fprint(buffer, e)
buf := buffer.Bytes()
runtime.Stack(buf[len(buf):cap(buf)], false)
req.Logger().Errorln(unsafe2.String(buf[:cap(buf)]))
}()
chain(req, resp)
}
开发者ID:fanbuchi,项目名称:zerver,代码行数:20,代码来源:recovery.go
示例14: preflight
func (c *CORS) preflight(req zerver.Request, resp zerver.Response, method, headers string) {
origin := "*"
if !c.allowAll {
origin = req.GetHeader(_CORS_ORIGIN)
if !c.allow(origin) {
resp.StatusCode(http.StatusOK)
return
}
}
respHeaders := resp.Headers()
respHeaders.Set(_CORS_ALLOWORIGIN, origin)
upperMethod := strings.ToUpper(method)
for _, m := range c.Methods {
if m == upperMethod {
respHeaders.Add(_CORS_ALLOWMETHODS, method)
break
}
}
for _, h := range strings2.SplitAndTrim(headers, ",") {
for _, ch := range c.Headers {
if strings.ToLower(h) == ch { // c.Headers already ToLowered when Init
respHeaders.Add(_CORS_ALLOWHEADERS, ch)
break
}
}
}
respHeaders.Set(_CORS_ALLOWCREDENTIALS, c.allowCredentials)
if c.exposeHeaders != "" {
respHeaders.Set(_CORS_EXPOSEHEADERS, c.exposeHeaders)
}
if c.preflightMaxage != "" {
respHeaders.Set(_CORS_MAXAGE, c.preflightMaxage)
}
resp.StatusCode(http.StatusOK)
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:41,代码来源:cors.go
示例15: Filter
func (ri *RequestId) Filter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
if req.ReqMethod() == zerver.METHOD_GET {
chain(req, resp)
return
}
reqId := req.GetHeader(ri.HeaderName)
if reqId == "" {
if ri.PassingOnNoId {
chain(req, resp)
} else {
resp.StatusCode(http.StatusBadRequest)
}
} else {
ip := http2.IpOfAddr(req.RemoteAddr())
id := ip + ":" + reqId
if err := ri.Store.Save(id); err == ErrRequestIDExist {
resp.StatusCode(http.StatusForbidden)
} else if err != nil {
ri.log.Warn(log.M{"msg": "save request id failed", "err": err.Error()})
} else {
chain(req, resp)
ri.Store.Remove(id)
}
}
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:26,代码来源:request_id.go
示例16: preflight
func (c *CORS) preflight(req zerver.Request, resp zerver.Response, method, headers string) {
origin := "*"
if !c.allowAll {
origin = req.Header(_CORS_ORIGIN)
if !c.allow(origin) {
goto END
}
}
resp.SetHeader(_CORS_ALLOWORIGIN, origin)
method = strings.ToUpper(method)
for _, m := range c.Methods {
if m == method {
resp.AddHeader(_CORS_ALLOWMETHODS, m)
break
}
}
for _, h := range strings2.SplitAndTrim(headers, ",") {
for _, ch := range c.Headers {
if strings.ToLower(h) == ch { // c.Headers already ToLowered when Init
resp.AddHeader(_CORS_ALLOWHEADERS, ch)
break
}
}
}
resp.SetHeader(_CORS_ALLOWCREDENTIALS, c.allowCredentials)
if c.exposeHeaders != "" {
resp.SetHeader(_CORS_EXPOSEHEADERS, c.exposeHeaders)
}
if c.preflightMaxage != "" {
resp.SetHeader(_CORS_MAXAGE, c.preflightMaxage)
}
END:
resp.ReportOK()
}
开发者ID:VicentLiu,项目名称:zerver,代码行数:40,代码来源:cors.go
示例17: Filter
func (l *Log) Filter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
now := time2.Now()
chain(req, resp)
cost := time2.Now().Sub(now)
l.log.Info(log.M{
"method": req.ReqMethod(),
"url": req.URL().String(),
"remote": req.RemoteAddr(),
"userAgent": req.GetHeader(zerver.HEADER_USERAGENT),
"cost": cost.String(),
"statusCode": resp.StatusCode(0),
})
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:14,代码来源:log.go
示例18: Filter
func (ri *RequestId) Filter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
if req.Method() == "GET" {
chain(req, resp)
return
}
reqId := req.Header(ri.HeaderName)
if reqId == "" {
if ri.PassingOnNoId {
chain(req, resp)
} else {
resp.ReportBadRequest()
resp.Send("error", ri.Error)
}
} else {
id := req.RemoteIP() + ":" + reqId
if err := ri.Store.Save(id); err == ErrRequestIDExist {
resp.ReportForbidden()
resp.Send("error", ri.ErrorOverlap)
} else if err != nil {
ri.logger.Warnln(err)
} else {
chain(req, resp)
ri.Store.Remove(id)
}
}
}
开发者ID:snowsnail,项目名称:zerver,代码行数:27,代码来源:request_id.go
示例19: Filter
func (j *JSONP) Filter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
if req.ReqMethod() != zerver.METHOD_GET {
chain(req, resp)
return
}
callback := req.Vars().QueryVar(j.CallbackVar)
if callback == "" {
chain(req, resp)
return
}
buffer := bytes.NewBuffer(make([]byte, 0, 256))
bw := wrap.BuffRespWriter{ // to avoid write header 200 first when write callback name
Buffer: buffer,
}
resp.Wrap(func(w http.ResponseWriter, shouldClose bool) (http.ResponseWriter, bool) {
bw.ResponseWriter = w
bw.ShouldClose = shouldClose
return &bw, shouldClose
})
chain(req, resp)
bw.Buffer = nil
_, err := io2.WriteString(resp, callback)
if err == nil {
_, err = io2.WriteString(resp, "(")
if err == nil {
_, err = resp.Write(buffer.Bytes())
if err == nil {
_, err = io2.WriteString(resp, ")")
}
}
}
if err != nil {
j.log.Warn(log.M{"msg": "write jsonp response failed", "err": err.Error()})
}
}
开发者ID:jacobzheng,项目名称:zerver,代码行数:38,代码来源:jsonp.go
示例20: Filter
func (c *CORS) Filter(req zerver.Request, resp zerver.Response, chain zerver.FilterChain) {
reqMethod := req.Header(_CORS_REQUESTMETHOD)
reqHeaders := req.Header(_CORS_REQUESTHEADERS)
if req.Method() == "OPTIONS" && (reqMethod != "" || reqHeaders != "") {
c.preflight(req, resp, reqMethod, reqHeaders)
} else {
c.filter(req, resp, chain)
}
}
开发者ID:snowsnail,项目名称:zerver,代码行数:10,代码来源:cors.go
注:本文中的github.com/cosiner/zerver.Request类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论