前端获取cookie并设置sameSite
时间: 2024-09-25 20:21:12 浏览: 28
cookie设置httpOnly和secure属性实现及问题
在前端JavaScript中,你可以使用`document.cookie`属性来获取浏览器存储的所有cookie。这个属性返回一个字符串,包含了所有键值对,每个键值对之间用分号(`;`)隔开。
要获取特定的cookie,例如名称为`myCookie`的,你可以这样做:
```javascript
let cookieValue = getCookie('myCookie');
function getCookie(name) {
const cookies = document.cookie.split(';'); // 分割cookie字符串
for (let i = 0; i < cookies.length; i++) {
let cookiePair = cookies[i].trim(); // 移除前导空格
if (cookiePair.startsWith(`${name}=`)) { // 如果开始于指定名称
return decodeURIComponent(cookiePair.slice(name.length + 1)); // 返回值并解码
}
}
return null; // 如果未找到该cookie,则返回null
}
```
至于设置`SameSite`属性,自2018年起,`SameSite`策略用于控制第三方网站如何访问通过`httpOnly`和`samesite`属性标记的cookie。在JavaScript中,通常不是直接设置这个属性,而是通过设置`withCredentials`选项来影响发送跨源请求时是否携带cookie。例如,如果你想要设置为严格的`Lax`模式(默认),可以这样修改Ajax请求:
```javascript
fetch(url, {
method: 'GET',
credentials: 'same-origin', // 设置为仅同源资源共享
// 其他headers等...
})
```
注意,现代浏览器已经默认将`SameSite=Lax`作为新的cookie安全标准,所以开发者需要适配这种变化。
阅读全文