diff --git a/g/net/ghttp/ghttp_server.go b/g/net/ghttp/ghttp_server.go index 6f4c69bab..db92fd7ef 100644 --- a/g/net/ghttp/ghttp_server.go +++ b/g/net/ghttp/ghttp_server.go @@ -76,7 +76,6 @@ type Server struct { statusHandlerMap map[string]HandlerFunc // 不同状态码下的注册处理方法(例如404状态时的处理方法) // COOKIE cookieMaxAge *gtype.Int // Cookie有效期 - cookies *gmap.IntInterfaceMap // 当前服务器正在服务(请求正在执行)的Cookie(每个请求一个Cookie对象) // SESSION sessionMaxAge *gtype.Int // Session有效期 sessionIdName *gtype.String // SessionId名称 @@ -189,7 +188,6 @@ func GetServer(name...interface{}) (*Server) { serveCache : gcache.New(), hooksCache : gcache.New(), routesMap : make(map[string]string), - cookies : gmap.NewIntInterfaceMap(), sessions : gcache.New(), servedCount : gtype.NewInt(), closeQueue : gqueue.New(), diff --git a/g/net/ghttp/ghttp_server_cookie.go b/g/net/ghttp/ghttp_server_cookie.go index cf445fa6a..2a576b874 100644 --- a/g/net/ghttp/ghttp_server_cookie.go +++ b/g/net/ghttp/ghttp_server_cookie.go @@ -37,19 +37,18 @@ type CookieItem struct { // 获取或者创建一个cookie对象,与传入的请求对应 func GetCookie(r *Request) *Cookie { - if v := r.Server.cookies.Get(r.Id); v != nil { - return v.(*Cookie) + if r.Cookie != nil { + return r.Cookie } - c := &Cookie { + r.Cookie = &Cookie { data : make(map[string]CookieItem), domain : r.GetHost(), server : r.Server, request : r, response : r.Response, } - c.init() - r.Server.cookies.Set(r.Id, c) - return c + r.Cookie.init() + return r.Cookie } // 从请求流中初始化,无锁 @@ -125,14 +124,10 @@ func (c *Cookie) Remove(key, domain, path string) { c.SetCookie(key, "", domain, path, -86400) } -// 请求完毕后删除已经存在的Cookie对象 -func (c *Cookie) Close() { - c.server.cookies.Remove(c.request.Id) -} - // 输出到客户端 func (c *Cookie) Output() { c.mu.RLock() + defer c.mu.RUnlock() for k, v := range c.data { // 只有expire != 0的才是服务端在本地请求中设置的cookie if v.expire == 0 { @@ -150,5 +145,4 @@ func (c *Cookie) Output() { }, ) } - c.mu.RUnlock() } diff --git a/g/net/ghttp/ghttp_server_handler.go b/g/net/ghttp/ghttp_server_handler.go index 546b46e4b..424d5f16c 100644 --- a/g/net/ghttp/ghttp_server_handler.go +++ b/g/net/ghttp/ghttp_server_handler.go @@ -198,8 +198,6 @@ func (s *Server) startCloseQueueLoop() { if v := s.closeQueue.PopFront(); v != nil { r := v.(*Request) s.callHookHandler(HOOK_BEFORE_CLOSE, r) - // 关闭当前会话的Cookie - r.Cookie.Close() // 更新Session会话超时时间 r.Session.UpdateExpire() s.callHookHandler(HOOK_AFTER_CLOSE, r)