Set-Cookie:全面了解这个HTTP头部字段

一、Set-Cookie和跨域问题

1、Set-Cookie是HTTP响应头部的一种的字段,常用于服务器端向浏览器端发送Cookie,以达到用户登录状态的维护等目的。

2、但是,在跨域的场景下,如果服务器发送的Set-Cookie的域名和客户端请求的域名不同,浏览器默认不会发到服务器,这时需要在响应头部加上Access-Control-Allow-Credentials和Access-Control-Allow-Origin字段。

// HTTP响应头部加上以下字段,支持跨域设置Cookie
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://example.com

二、Set-Cookie remove无法删除的问题

1、通过设置过期时间为过去的一个时间点,可以使浏览器删除Cookie,但在某些情况下,Set-Cookie remove无法删除cookie。

2、原因是如果给Cookie设置了HttpOnly属性,JavaScript将无法删除该Cookie。

// 设置Cookie时添加HttpOnly属性
Set-Cookie: name=value; HttpOnly

三、Set-Cookie SameSite属性

1、SameSite属性是Set-Cookie新增的一个属性,用于抵御跨站请求伪造(CSRF)攻击。SameSite属性有三个取值:Strict、Lax和None。

2、Strict模式下Cookie只有在同站点请求时才会发送,Lax模式下除了POST请求外,其他情况下也会发送。而None则表示无论何时请求都会发送Cookie。

// 在Set-Cookie字段中设置SameSite属性
Set-Cookie: name=value; SameSite=Strict  // Strict模式
Set-Cookie: name=value; SameSite=None   // None模式

四、前端设置cookie

1、前端可以通过document.cookie属性设置Cookie。需要注意的是,每个Cookie之间应使用分号隔开,并且空格一定要去除。

2、如果cookie的value值包含特殊字符,需要使用encodeURIComponent进行编码处理。

// 前端通过document.cookie设置Cookie
document.cookie = "name=value; expires=Wed, 21 Oct 2022 07:28:00 GMT; path=/"
document.cookie = "name=" + encodeURIComponent(value) + "; expires=Wed, 21 Oct 2022 07:28:00 GMT; path=/"

五、前端获取set-cookie的值

1、前端可以通过document.cookie属性获取当前域名下所有的cookie。但因为cookie的路径和域名等限制,可能会获取不到所有的cookie。

2、如果需要获取某个特定的cookie,可以通过循环并判断cookie的name是否为目标name来获取。

// 前端通过document.cookie获取所有cookie
console.log(document.cookie);

// 前端获取某个特定的cookie
function getCookie(name) {
  var cookies = document.cookie.split(';');
  for (var i = 0; i < cookies.length; i++) {
    var cookie = cookies[i].trim();
    if (cookie.indexOf(name) === 0) {
      return cookie.substring(name.length + 1, cookie.length);
    }
  }
  return null;
}
console.log(getCookie('name'));

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/306161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-02 12:00
下一篇 2025-01-02 12:00

相关推荐

  • Python应用程序的全面指南

    Python是一种功能强大而简单易学的编程语言,适用于多种应用场景。本篇文章将从多个方面介绍Python如何应用于开发应用程序。 一、Web应用程序 目前,基于Python的Web…

    编程 2025-04-29
  • Python中set函数的作用

    Python中set函数是一个有用的数据类型,可以被用于许多编程场景中。在这篇文章中,我们将学习Python中set函数的多个方面,从而深入了解这个函数在Python中的用途。 一…

    编程 2025-04-29
  • Python zscore函数全面解析

    本文将介绍什么是zscore函数,它在数据分析中的作用以及如何使用Python实现zscore函数,为读者提供全面的指导。 一、zscore函数的概念 zscore函数是一种用于标…

    编程 2025-04-29
  • Python Set元素用法介绍

    Set是Python编程语言中拥有一系列独特属性及特点的数据类型之一。它可以存储无序且唯一的数据元素,这使得Set在数据处理中非常有用。Set能够进行交、并、差集等操作,也可以用于…

    编程 2025-04-29
  • 全面解读数据属性r/w

    数据属性r/w是指数据属性的可读/可写性,它在程序设计中扮演着非常重要的角色。下面我们从多个方面对数据属性r/w进行详细的阐述。 一、r/w的概念 数据属性r/w即指数据属性的可读…

    编程 2025-04-29
  • Python计算机程序代码全面介绍

    本文将从多个方面对Python计算机程序代码进行详细介绍,包括基础语法、数据类型、控制语句、函数、模块及面向对象编程等。 一、基础语法 Python是一种解释型、面向对象、动态数据…

    编程 2025-04-29
  • Matlab二值图像全面解析

    本文将全面介绍Matlab二值图像的相关知识,包括二值图像的基本原理、如何对二值图像进行处理、如何从二值图像中提取信息等等。通过本文的学习,你将能够掌握Matlab二值图像的基本操…

    编程 2025-04-28
  • 疯狂Python讲义的全面掌握与实践

    本文将从多个方面对疯狂Python讲义进行详细的阐述,帮助读者全面了解Python编程,掌握疯狂Python讲义的实现方法。 一、Python基础语法 Python基础语法是学习P…

    编程 2025-04-28
  • 全面解析Python中的Variable

    Variable是Python中常见的一个概念,是我们在编程中经常用到的一个变量类型。Python是一门强类型语言,即每个变量都有一个对应的类型,不能无限制地进行类型间转换。在本篇…

    编程 2025-04-28
  • Zookeeper ACL 用户 anyone 全面解析

    本文将从以下几个方面对Zookeeper ACL中的用户anyone进行全面的解析,并为读者提供相关的示例代码。 一、anyone 的作用是什么? 在Zookeeper中,anyo…

    编程 2025-04-28

发表回复

登录后才能评论