From 217e24815bc014b23f84171b74260b1c96f85716 Mon Sep 17 00:00:00 2001 From: Yongzheng Lai Date: Tue, 31 Mar 2015 12:30:47 +0800 Subject: [PATCH 1/2] Update output.go fix cookie not work in IE --- context/output.go | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/context/output.go b/context/output.go index 2141513d..f981df50 100644 --- a/context/output.go +++ b/context/output.go @@ -98,28 +98,30 @@ func (output *BeegoOutput) Body(content []byte) { func (output *BeegoOutput) Cookie(name string, value string, others ...interface{}) { var b bytes.Buffer fmt.Fprintf(&b, "%s=%s", sanitizeName(name), sanitizeValue(value)) - if len(others) > 0 { - switch v := others[0].(type) { - case int: - if v > 0 { - fmt.Fprintf(&b, "; Max-Age=%d", v) - } else if v < 0 { - fmt.Fprintf(&b, "; Max-Age=0") - } - case int64: - if v > 0 { - fmt.Fprintf(&b, "; Max-Age=%d", v) - } else if v < 0 { - fmt.Fprintf(&b, "; Max-Age=0") - } - case int32: - if v > 0 { - fmt.Fprintf(&b, "; Max-Age=%d", v) - } else if v < 0 { - fmt.Fprintf(&b, "; Max-Age=0") - } - } - } + + //fix cookie not work in IE + if len(others) > 0 { + switch v := others[0].(type) { + case int: + if v > 0 { + fmt.Fprintf(&b, "; Expires=%s; Max-Age=%d", time.Now().Add(time.Duration(v) * time.Second).UTC().Format(time.RFC1123), v) + } else if v < 0 { + fmt.Fprintf(&b, "; Max-Age=0") + } + case int64: + if v > 0 { + fmt.Fprintf(&b, "; Expires=%s; Max-Age=%d", time.Now().Add(time.Duration(v) * time.Second).UTC().Format(time.RFC1123), v) + } else if v < 0 { + fmt.Fprintf(&b, "; Max-Age=0") + } + case int32: + if v > 0 { + fmt.Fprintf(&b, "; Expires=%s; Max-Age=%d", time.Now().Add(time.Duration(v) * time.Second).UTC().Format(time.RFC1123), v) + } else if v < 0 { + fmt.Fprintf(&b, "; Max-Age=0") + } + } + } // the settings below // Path, Domain, Secure, HttpOnly From 9261c80509cbb08f65d28e64fd396be5722eb2d2 Mon Sep 17 00:00:00 2001 From: Yongzheng Lai Date: Tue, 31 Mar 2015 12:36:39 +0800 Subject: [PATCH 2/2] Update output.go --- context/output.go | 1 + 1 file changed, 1 insertion(+) diff --git a/context/output.go b/context/output.go index f981df50..7edde552 100644 --- a/context/output.go +++ b/context/output.go @@ -29,6 +29,7 @@ import ( "path/filepath" "strconv" "strings" + "time" ) // BeegoOutput does work for sending response header.