JavaScript操作Cookie

在Web开发中,我们经常使用Cookie保存一些不是非常敏高的数据。比如“下次自动登录”,“广告显示”等功能。定义是:某些网站为了辨别用户身份而存储在用户本地终端(主要是浏览器)上的数据。定义域RFC2109。

Cookie总是保存在客户端中,可分为Cookie和硬盘Cookie。内存Cookie保存在内存中,浏览器关闭之后就消失了。硬盘Cookie保存在硬盘里面,有过期时间,除非用户手动清理或者其他网页脚本处理,或者到了Cookie的过期时间。

Cookie的发明目的,因为HTTP协议是无状态的,服务器不知道用户上一次做了什么,这样浏览器和服务器交互时,服务器不知道浏览器的任何状态。服务器借助浏览器设置或读取Cookie中的信息,借此维护浏览器和服务器的会话状态。

通过document.cookie,我们可以写入cookie或读取cookie。代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <script type="text/javascript">
        //写入cookie
        function setCookie(c_name, value, expiredays) {
            var exdate = new Date();
            exdate.setDate(exdate.getDate() + expiredays);
            document.cookie=c_name+"="+escape(value)+
                ((expiredays==null)?"":";expires"+exdate.toGMTString())
        }
        setCookie("username", "Lee", 365);
        setCookie("password", "小明", 365);

        //读取cookie
        function getCookie(c_name) {
            if (document.cookie.length > 0) {
                c_start = document.cookie.indexOf(c_name + "=");
                if (c_start != -1) {
                    c_start = c_start + c_name.length + 1;
                    c_end = document.cookie.indexOf(";", c_start);
                    return unescape(document.cookie.substring(c_start, c_end));
                }
            }
            return "";
        }
        var temp_cookie = "username=Lee; password=%u5C0F%u660E";
        var cookiename="username";
        var start = temp_cookie.indexOf(cookiename+"=");//0
        if(start!=-1){
            start = start + cookiename.length + 1;//1是等号的长度
            end = temp_cookie.indexOf(";", start);//找到分号
            console.log(unescape(temp_cookie.substring(start,end)));
        }
    </script>
</body>
</html>

Cookie在隐私,安全和广告的问题

很多网站,特别是新闻门户和电商网站,都会在用户访问该页面时,写入Cookie。然后你在访问其他网站或电商网站,这些网站也会读取这些cookie,当然确保可以读到cookie信息。然后后台广告服务器根据cookie的信息,为这个网站显示广告。也就是经常在网络营销里面提到的“人群定向”。

参考资料:

1.http://zh.wikipedia.org/wiki/Cookie

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杂烩

GitHug备忘 原

作为开源代码库以及版本控制系统,Github拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首...

635
来自专栏QQ空间开发团队的专栏

TPatch动态补丁系统(iOS)

对于每一个开发,从写Hello World开始,到使用各种语言,可能都会遇到各种BUG。有的BUG能快速解决,比如Web侧的,发个JS或者Html即可。但是在终...

2.5K1
来自专栏CSDN技术头条

Redis错误配置详解

Redis提供了许多提高和维护高效内存数据库使用的工具。在无需额外配置应用层的前提下,Redis独特的数据类型、指令和命令调优就可以满足应用的需求,但是错误的配...

21910
来自专栏python3

thinkphp3关闭日志

862
来自专栏建站达人秀

如何搭建 Firekylin 博客

FireKylin 是基于国内先进的 Node.js 框架 ThinkJS 2.0 开发的通用博客系统,是由奇虎360公司Web前端工程师组成的专业团队 75T...

3432
来自专栏EAWorld

8种至关重要OAuth API授权流与能力

在本文中,Curity的Daniel Lindau概述了重要的OAuth授权流程和能力。

771
来自专栏difcareer的技术笔记

Instant Run 导致动态加载找不到类问题

今天遇到一个诡异的问题,之前在4.4.4手机上正常运行的动态加载在6.0.1上居然报找不到类,记录一下定位过程。

933
来自专栏BY的专栏

为博客添加 Gitalk 评论插件结语

4096
来自专栏小尘哥的专栏

也许能帮到你一点!eboot框架基础版发布

目前发布一个基础版,适用于中小型项目开发,后续会加入更多功能,以满足大型项目的需求。

721
来自专栏北京马哥教育

DNS服务器之理论基础

一、什么是DNS DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的“网址”解析为IP地址。 在互联网上...

5265

扫码关注云+社区

领取腾讯云代金券