热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

cookie,document.cookie

特点:服务器端可以设置请求头来控制浏览器的cookie值写入操作只会修改其中提到的cookie。namevalue必须被编码。一个cookie最大为4KB,每个网站最多有20+个左

特点:



  • 服务器端可以设置请求头来控制浏览器的COOKIE值



  • 写入操作只会修改其中提到的 COOKIE。



  • name/value 必须被编码。



  • 一个 COOKIE 最大为 4KB,每个网站最多有 20+ 个左右的 COOKIE(具体取决于浏览器)。



  • 每次请求都会携带COOKIE请求头到服务器中



 

COOKIE 选项:



  • path=/,默认为当前路径,使 COOKIE 仅在该路径下可见。



  • domain=site.com,默认 COOKIE 仅在当前域下可见,如果显式设置了域,可以使 COOKIE 在子域下也可见。



  • expiresmax-age 设置 COOKIE 过期时间,如果没有设置,则当浏览器关闭时 COOKIE 就失效了。



  • secure 使 COOKIE 仅在 HTTPS 下有效。



  • samesite,如果请求来自外部网站,禁止浏览器发送 COOKIE,这有助于防止 XSRF 攻击。



  • httponly, 只能服务器使用 Set-COOKIE设置,这个选项禁止任何 Javascript 访问 COOKIE



 

一组方便操作COOKIE的函数。

getCOOKIE(name) 函数返回具有给定 name 的 COOKIE:


// 返回具有给定 name 的 COOKIE,
// 如果没找到,则返回 undefined
function getCOOKIE(name) {
let matches = document.COOKIE.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, ‘\\$1‘) + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}

 

setCOOKIE(name, value, options)

将 COOKIE name 设置为具有默认值 path=/(可以修改以添加其他默认值)和给定值 value


function setCOOKIE(name, value, optiOns= {}) {
?
optiOns= {
path: ‘/‘,
// 如果需要,可以在这里添加其他默认值
...options
};
?
if (options.expires instanceof Date) {
options.expires = options.expires.toUTCString();
}
?
let updatedCOOKIE = encodeURIComponent(name) + "=" + encodeURIComponent(value);
?
for (let optionKey in options) {
updatedCOOKIE += "; " + optionKey;
let optiOnValue= options[optionKey];
if (optionValue !== true) {
updatedCOOKIE += "=" + optionValue;
}
}
?
document.COOKIE = updatedCOOKIE;
}
?
// 使用范例:
setCOOKIE(‘user‘, ‘John‘, {secure: true, ‘max-age‘: 3600});

 

deleteCOOKIE(name)

要删除一个 COOKIE,我们可以给它设置一个负的过期时间来调用它:


function deleteCOOKIE(name) {
setCOOKIE(name, "", {
‘max-age‘: -1
})
}

  

参考链接:

https://zh.Javascript.info/COOKIE

 


推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 自动验证时页面显示问题的解决方法
    在使用自动验证功能时,页面未能正确显示错误信息。通过使用 `dump($info->getError())` 可以帮助诊断和解决问题。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 在处理木偶评估函数时,我发现可以顺利传递本机对象(如字符串、列表和数字),但每当尝试将JSHandle或ElementHandle作为参数传递时,函数会拒绝接受这些对象。这可能是由于这些句柄对象的特殊性质导致的,建议在使用时进行适当的转换或封装,以确保函数能够正确处理。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
author-avatar
詹荣臣
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有