问题描述
我有一个响应标头set-cookie
,其值为set-cookie: frontend=2j5mfe8nidhhmltlaoliu5bmj6; expires=Thu,10-Sep-2020 22:52:25 GMT; Max-Age=86400; path=/; domain=www.shoepalace.com; httponly
,我只想记录frontend=
之后直到;
的那部分Cookie(将会是2j5mfe8nidhhmltlaoliu5bmj6
)
const string = response.headers['set-cookie']
console.log(string)
That logs this:
[
'frontend=0uhi7fj03fro4f5n2at4ev1t77; expires=Fri,11-Sep-2020 01:15:47 GMT; Max-Age=86400; path=/; domain=www.shoepalace.com; HttpOnly','__cf_bm=2d7abb53a603ff50426362615a2cba7c3bd0d58c-1599700547-1800-AVURmheyokYbppItftnydR/xiAuOS75aQzUlJoxN/79VKKgYr9d7cx6DmgdSK4BbvjQ/pjC0+5lQXkLdn/QIdII=; path=/; expires=Thu,10-Sep-20 01:45:47 GMT; domain=.shoepalace.com; HttpOnly; Secure; SameSite=None'
]
const pairs = string.split(';')
const obj = {}
pairs.forEach(pair => {
const split = pair.split('=')
const key = split[0]
const value = split[1]
obj[key] = value
})
console.log(obj.frontend)
解决方法
类似这样的东西:
const cookies = [
'frontend=0uhi7fj03fro4f5n2at4ev1t77; expires=Fri,11-Sep-2020 01:15:47 GMT; Max-Age=86400; path=/; domain=www.shoepalace.com; HttpOnly','__cf_bm=2d7abb53a603ff50426362615a2cba7c3bd0d58c-1599700547-1800-AVURmHeYokYbppItftnydR/xiAuOS75aQzUlJoxN/79VKKgYr9d7cx6DmgdSK4BbvjQ/pjC0+5lQXkLdn/QIdII=; path=/; expires=Thu,10-Sep-20 01:45:47 GMT; domain=.shoepalace.com; HttpOnly; Secure; SameSite=None'
]
let frontendValue
cookies.forEach(cookie => {
const pairs = cookie.split(';')
pairs.forEach(pair => {
const split = pair.split('=')
const key = split[0]
if (key === 'frontend') {
frontendValue = split[1]
}
})
})
console.log(frontendValue)
- 我们在每个字符串之后将字符串拆分为一个数组;
- 我们创建一个空的对象/字典/地图
- 遍历我们获得的所有键值对
- 再次在= 上分割
- 读取密钥并返回前端的值