前两天介绍完 Secure、HttpOnly、SameSite 几个跟 cookie 安全性有关的属性之後,大家应该也读得有点累了,今天要来讲点比较轻松的,也就是怎麽在後端的 API Server 设置 cookie 时把前几天讲到的属性给加上去
首先来讲讲用 express 写的 API Server,在设定 cookie 时如果想加上其他属性,只要在 res.cookie()
最後一个参数里面加上去就好了
app.post('/signin', confirmPassword, (req, res) => {
res.cookie("sessionID", '123456789aabb', {
httpOnly: true,
secure: true,
samwSite: 'Lax',
});
)
但直接把 secure 设定成 true
有个不太方便的地方,就是因为平常在开发时通常不会在 localhost 使用 HTTPS,因此会导致 cookie 送不出去。而解决方法也很简单,只要根据 NODE_ENV
去做出不同的设定就可以了,所以也千万别忘记要在 production 上把 NODE_ENV
设为 production
,而开发时则是设为 development
app.post('/signin', confirmPassword, (req, res) => {
res.cookie("sessionID", '123456789aabb', {
httpOnly: true,
secure: process.env.NODE_ENV !== "development",
samwSite: 'Lax',
});
)
而在 gin 里面也是类似的做法,在验证完帐号密码要 set cookie 时,把 Secure、HttpOnly、SameSite 这些属性都加上去就可以了,也记得在 Secure 那边要先判断目前是不是在 production 上,不然在 localhost 测试时会怎麽样都登入不进去哦
func signInHandler(ctx *gin.Context) {
http.SetCookie(ctx.Writer, &http.Cookie{
Name: "sessionID",
Value: "123456789aabb",
Secure: os.Getenv("GIN_MODE") == "release",
HttpOnly: true,
SameSite: http.SameSiteLaxMode
})
}
func main() {
router := gin.Default()
router.POST("/signin", confirmPassword, signInHandler)
router.Run(":8888")
}
今天用几个范例讲解了怎麽在 API Server 上 Set-Cookie 时可以加上想要的属性,用起来非常简单,而且各语言几乎都是这样写,所以就算你写的不是 Node.js 或 Go,只要上网查一下 flask set samesite cookie
之类的就可以找到不少资料罗~
>>: DAY 19 Big Data 5Vs – Variety(速度) EMR (2)
昨天提到今天要讲一个交易上特别重要的流程,就是付款状态! 为什麽呢? 因为在交易的过成功前是最重要的...
Node.js 版本间的差异使得有些专案需要使用特定的版本才能正常运作,因此各专案间需要来回的切换 ...
在软件开发中很常听到 SCRUM 这个字,本身是待在软件业当PM公司没有跑到非常正规的 SCRUM ...
烟囱式架构 相对於中台架构,烟囱式架构就像多个互相独立的应用系统,代表着业务流程的区隔 ─ 重复的功...
接下来要讲有关线上取图的banner,会分开主要是因为有些微的不一样,包含在Manifest中添加网...