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

HTTP状态管理机制之Cookie,状态机制cookie

php教程|php手册HTTP,状态,管理,机制,之,Cookie,cookie,HTTP,状态,管理,机制,之,Cookie,cookie,php教程-php手册HTTP状态管理

php教程|php手册HTTP状态管理机制之COOKIE,状态机制COOKIE
HTTP,状态,管理,机制,之,COOKIE,COOKIE,HTTP,状态,管理,机制,之,COOKIE,COOKIE,
php教程-php手册
HTTP状态管理机制之COOKIE,状态机制COOKIE
qq访客助手源码,vscode未定义的引用,ubuntu查询依赖,sts怎么加tomcat,凉席上有爬虫,php tcp协议,潜江产品seo推广多少钱,动画片网站456lzw

A、COOKIE 起源

COOKIE 最早是网景公司的雇员 Lou Montulli 在1993年3月发明,后被 W3C 采纳,目前 COOKIE 已经成为标准,所有的主流浏览器如 IE、Chrome、Firefox、Opera 等都支持。

ucgui源码分析,ubuntu 哪个系统好,腾讯课堂视频爬虫,获取php php运行方式,网页seo价格lzw
COOKIE 的诞生是由于 HTTP 协议的天生缺陷,HTTP 是一种无状态的协议,简单的 Request 和 Response 一旦请求/响应结束,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话,即服务器并不清楚是哪个客户端。
jmail组件源码,怎么使用vscode插件,ubuntu 指定别名,tomcat用命令运行,sqlite3文件下载,找一下海城五中的爬虫中的照片,php明天的时间,亚马逊运营如何优化seo,交换网站源码,wordpress淘宝模板lzw
一些典型应用如 登陆/购物车 就无法实现了。比如,用户 A 在购物商城购买的商品都应该放在 A 的购物车内,不论是用户 A 什么时间购买的,这都是属于同一个会话的,不能放入用户 B 或用户 C 的购物车内,这不属于同一个会话。

基本的原理如图

B、COOKIE 操作

对 COOKIE 的操作包括如下

注意,COOKIE 多数时候由服务器端创建,JS 也可以创建 COOKIE,但 HttpOnly 类型的 JS 无法创建。

浏览器提供的 COOKIE API (document.COOKIE)实在过于简陋,可以稍封装下,如以下采用setter/getter方式 COOKIE 函数就方便了许多

/* * JS 写COOKIE和读COOKIE操作 * * **取COOKIE** * COOKIE(name) * * **写COOKIE** * COOKIE(name, value) * COOKIE(name, value, option) */var COOKIE = function(name, value, option) { var doc = document if (value != undefined) { // set option = option || {} if (value === null) { value = '' option.expires = -1 } var expires = '' if (option.expires && (typeof option.expires == 'number' || option.expires.toUTCString)) { var date = new Date if (typeof option.expires == 'number') { date.setTime(date.getTime() + (option.expires * 24 * 60 * 60 * 1000)) } else { date = option.expires } // for IE expires = '; expires=' + date.toUTCString() } var path = option.path ? '; path=' + option.path : '' var domain = option.domain ? '; domain=' + option.domain : '' var secure = option.secure ? '; secure' : '' doc.COOKIE = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('') } else { // get var COOKIEValue = null if (doc.COOKIE && doc.COOKIE != '') { var COOKIEs = doc.COOKIE.split(';') for (var i = 0; i 1 ) { try { COOKIEValue = decodeURIComponent(COOKIE[1]) } catch(e) { COOKIEValue = COOKIE[1] } break } } } return COOKIEValue }};

当然,还有更方便的 https://github.com/florian/COOKIE.js,提供了更多便捷函数。

C、COOKIE 类型

比如,在新浪云上测试页面:http://snandy.sinaapp.com/php/COOKIE.php,我种了 3 个 COOKIE,分别是 c1, c2, c3

$d1 = mktime(1,1,1,1,1,2018);// 普通COOKIEsetCOOKIE("c1", "Jack", $d1); // 安全的COOKIE,仅https,第6个参数setCOOKIE("c2", "John", $d1, NULL, NULL, TRUE); // HttpOnly COOKIE 第7个参数setCOOKIE("c3", "Resig", $d1, NULL, NULL, NULL, TRUE);

用 Firefox 访问

我种的三个都有,saeut是新浪云种的。

在 firebug 控制台输入 document.COOKIE

可以看到,c2,c3 都是访问不到的。c2 是 安全的COOKIE,需要在https协议下访问,c3 则是 httpOnly 的,JS无法访问,这个需要注意。

把访问协议改成 https: https://snandy.sinaapp.com/php/COOKIE.php,firebug 切换到控制台再输入 document.COOKIE,可以看到 c2 就可以访问了

D、COOKIE 的坑

1. COOKIE 太大或数量过多时页面访问报错,比如会出现如下提示

因此站点的 COOKIE 需要管理,不能随意种 COOKIE。另外尽量指定path,将COOKIE限定在指定范围内。

网站 browserCOOKIElimits.squawky.net ,记录了各浏览器 COOKIE 大小

2. 保存中文时需要Unicode编码(encodeURIComponent),否则存的是乱码


推荐阅读
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本地存储组件实现对IE低版本浏览器的兼容性支持 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
author-avatar
九天0307_963
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有