cookie SameSite support

This commit is contained in:
hochi 2018-11-10 13:52:19 +01:00
parent 37854ee10f
commit c312e62070
2 changed files with 10 additions and 5 deletions

View File

@ -697,10 +697,14 @@ func (c *Context) GetRawData() ([]byte, error) {
// SetCookie adds a Set-Cookie header to the ResponseWriter's headers.
// The provided cookie must have a valid Name. Invalid cookies may be
// silently dropped.
func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool) {
func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool, sameSiteOnly bool) {
if path == "" {
path = "/"
}
sameSite := http.SameSiteDefaultMode
if sameSiteOnly {
sameSite = http.SameSiteStrictMode
}
http.SetCookie(c.Writer, &http.Cookie{
Name: name,
Value: url.QueryEscape(value),
@ -709,6 +713,7 @@ func (c *Context) SetCookie(name, value string, maxAge int, path, domain string,
Domain: domain,
Secure: secure,
HttpOnly: httpOnly,
SameSite: sameSite,
})
}

View File

@ -579,14 +579,14 @@ func TestContextPostFormMultipart(t *testing.T) {
func TestContextSetCookie(t *testing.T) {
c, _ := CreateTestContext(httptest.NewRecorder())
c.SetCookie("user", "gin", 1, "/", "localhost", true, true)
assert.Equal(t, "user=gin; Path=/; Domain=localhost; Max-Age=1; HttpOnly; Secure", c.Writer.Header().Get("Set-Cookie"))
c.SetCookie("user", "gin", 1, "/", "localhost", true, true, true)
assert.Equal(t, "user=gin; Path=/; Domain=localhost; Max-Age=1; HttpOnly; Secure; SameSite=Strict", c.Writer.Header().Get("Set-Cookie"))
}
func TestContextSetCookiePathEmpty(t *testing.T) {
c, _ := CreateTestContext(httptest.NewRecorder())
c.SetCookie("user", "gin", 1, "", "localhost", true, true)
assert.Equal(t, "user=gin; Path=/; Domain=localhost; Max-Age=1; HttpOnly; Secure", c.Writer.Header().Get("Set-Cookie"))
c.SetCookie("user", "gin", 1, "", "localhost", true, true, true)
assert.Equal(t, "user=gin; Path=/; Domain=localhost; Max-Age=1; HttpOnly; Secure; SameSite=Strict", c.Writer.Header().Get("Set-Cookie"))
}
func TestContextGetCookie(t *testing.T) {