js day10 cookie

通信协议
通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。
在计算机通信中,通信协议用于实现计算机与网络连接之间的标准,网络如果没有统一的通信    协议,电脑之间的信息传递就无法识别。 通信协议是指通信各方事前约定的通信规则,可以简    单地理解为各计算机之间进行相互会话所使用的共同语言。两台计算机在进行通信时,必须使    用的通信协议。
TCP/IP
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互    联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网    络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据    如何在它们之间传输的标准。
HTTP
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络    协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和    接收HTML页面的方法。
HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网    站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默    认端口为80)的HTTP请求。
前端面试题1:一次完整的HTTP事务是怎样的一个过程?
a. 域名解析
b. 发起TCP的3次握手
c. 建立TCP连接后发起http请求
d. 服务器端响应http请求,浏览器得到html代码
e. 浏览器解析html代码,并请求html代码中的资源
f. 浏览器对页面进行渲染呈现给用户
前端面试题2:HTTP和HTTPS的区别
HTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),    这个时候,就成了我们常说的HTTPS。默认HTTP的端口号为80,HTTPS的端口号为443。
COOKIE    的概念
Cookie又叫会话跟踪技术是由Web服务器保存在用户浏览器上的小文本文件,它可以包含相关用户的信息。无论何时用户链接到服务器,Web站点都可以访问Cookie信息 。
比如:自动登录、记住用户名,记住一些和用户相关的信息等
cookie的特点
禁用Cookie后,无法正常登陆。 
cookie是与浏览器相关的,不同浏览器之间所保存的cookie也是不能互相访问的; 
cookie可能被删除。因为每个cookie都是硬盘上的一个文件; 
cookie安全性不够高。 
cookie的常见使用
保存用户登录状态。 
跟踪用户行为。
定制页面。
创建购物车。
cookie的使用及封装
Cookie名称和值可以由服务器端开发自己定义。
如果cookie不存在,输出undefined.
添加cookie
document.cookie=‘key = value ; expires=过期时间’;
获取cookie
document.cookie
删除cookie
将cookie的过期时间设为一个过去的时间。
了解XSS攻击(cross site script:跨站脚本攻击)
XSS攻击全称跨站脚本攻击,是为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
如何预防xss攻击:
用户的输入(url)要进行过滤。后端对你传入的内容一定进行过滤。对于输出进行转义。
加密方式:Md5/SHA1
数组、对象cookie的存储和访问。
1、JSON.parse 函数
作用:将 JavaScript 对象表示法 (JSON) 字符串转换为对象,具有json格式检测功能。
2、JSON.stringify()函数
作用:将 JavaScript 值转换为 JavaScript 对象表示法 (JSON) 字符串
3、eval()函数---性能不及JSON.parse(),安全性不好。
作用:eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
eval()在解析代码时还要用一对圆括号将字符串包起来。其目的是迫使eval函数在处理        JavaScript代码的时候强制    将括号内的表达式转化为对象,而不是作为语句来执行。
例如:eval("{}") 和 eval('('+'{}'+')')
强化练习
1.一周内免登陆。
2.记录图片位置。
3.照片墙的记录。
综合应用
1 . 购物车的操作。

1、encodeURI/decodeURI  
encodeURI:方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 encodeURIComponent 对这些字符进行编码  
decodeURI:从用encodeURI方法编码的String对象中返回已解码的字符串  
例外字符:! @ # $ & * ( ) = : / ; ? + '  
2、encodeURIComponent/decodeURIComponent  
encodeURIComponent:encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码  
decodeURIComponent:从用encodeURIComponent方法编码的String对象中返回已解码的字符串  
例外字符:! * ( ) '

补充:

当ul的总宽度不想计算时,可以先设大概值,然后用浏览器的f12下调

cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

以字符串的方式存键值对

cookie是客户端和服务器之间的,cookie本地娶不到

安装了http-server服务器,并用自带的编辑器打开页面,在下方终端处输入命令,打开服务器

终止命令ctrl+c

若8080端口被占用了,则利用hs -o -p 8888

一次会话过程是指打开直到关闭

cookie可以多次赋值,不会覆盖,会自动用“;”+空格来分开

后台传递的数据一般是json类型的;

以后键都加引号

1,

<script>
        window.onload = function() {
            var set = document.getElementById('set');
            8
            var get = document.getElementById('get');
            var username = document.getElementById('username');
            set.onclick = function() {
                document.cookie = "username=" + username.value;
                alert('存好了');
            }

            get.onclick = function() {
                console.log(document.cookie);
            }
        }
    </script>

2.

<script>
        window.onload = function() {
            var set = document.getElementById('set');
            var get = document.getElementById('get');
            set.onclick = function() {
                document.cookie = 'username = zhangsan';
                document.cookie = 'age=20';
                document.cookie = 'sex=nan';
                alert('存好了');
            }

            get.onclick = function() {
                var arr = document.cookie.split('; ');
                for (var i = 0; i < arr.length; i++) {
                    var item = arr[i].split('=');
                    if (item[0] == 'username') {
                        console.log('用户名:' + item[1]);
                    }
                }
            }
        }
    </script>
</head>

<body>
    <button id="set">存 </button>
    <button id="get">取 </button>
</body>

3.

<script>
        window.onload = function() {
            var username = document.getElementById('username');
            var password = document.getElementById('password');
            var reg = document.getElementById('reg');
            reg.onclick = function() {
                document.cookie = 'username=' + username.value;
                document.cookie = 'password=' + password.value;
                location.href = "eg05.login.html";
            }
        }
    </script>
</head>

<body>
    <input type="text" id="username">
    <input type="text" id="password">
    <input type="button" value="注册" id="reg">
</body>

4.

<script>
        window.onload = function() {
            var username = document.getElementById('username');
            var password = document.getElementById('password');
            var login = document.getElementById('login');
            var str = document.cookie;
            var arr = str.split('; ');
            var yonghuming = '';
            var mima = '';
            for (var i = 0; i < arr.length; i++) {
                var item = arr[i].split('=');
                if ('username' == item[0]) {
                    yonghuming = item[1];
                }
                if ('password' == item[0]) {
                    mima = item[1];
                }
            }
            login.onclick = function() {
                var uname = username.value;
                var pwd = password.value;
                if (uname == yonghuming && pwd == mima) {
                    alert('登陆成功');
                } else {
                    alert('登陆失败');
                }
            }
        }
    </script>
</head>

<body>
    <input type="text" id="username">
    <input type="text" id="password">
    <input type="button" value="登陆" id="login">
</body>

5.

<script>
        // JSON是一种中立于语言的轻量级数据交换格式 --- 符合JavaScript 对象 语法的
        var data = [{
            username: 'zhangsan',
            age: 20,
            sex: 'nan'
        }, {
            username: 'lisi',
            age: 18,
            sex: 'nv'
        }, {
            username: 'wangwu',
            age: 12,
            sex: 'nv'
        }, {
            username: 'zhaoliu',
            age: 18,
            sex: 'nv'
        }]; //  JSON数组
    </script>
</head>

<body>
    <button id="set">存</button>
    <button id="get">取</button>
    <script>
        set.onclick = function() {
            document.cookie = 'data=' + JSON.stringify(data);
            alert('存好了');
        }
        get.onclick = function() {
            var str = document.cookie;
            var arr = str.split('; ');
            for (var i = 0; i < arr.length; i++) {
                var item = arr[i].split('=');
                if (item[0] == 'data') {
                    var d = JSON.parse(item[1]); //将JSON字符串转换成JSON对象或JSON数组
                    console.log(d);
                }
            }
        }

        //  JSON.stringify() 将JSON对象转换成JSON字符串,JSON字符串的key都需要带引号
    </script>
</body>
6.

<script>
        var str = '{"name":"zhangsan","age":20}';
        console.log(JSON.parse(str)); // JSON.parse必须外面单引号,里面双引号
    </script>

7

<script src="test.js"></script>
    <!--[if lte IE 8]> 
        <script src="json2.js"></script>
        <style>
            .box{height:200px;width:200px;background:red;}
        </style>
    <![endif]-->
</head>

<body>
    <div class="box"></div>
</body>

8.

<body>
    <button id="set">存</button>
    <button id="del">删</button>
    <script>
        var set = document.getElementById('set');
        var del = document.getElementById('del');
        set.onclick = function() {
            var d = new Date();
            d.setDate(d.getDate() + 2);
            document.cookie = 'username=zhangsan;expires=' + d;
        }

        del.onclick = function() {
            document.cookie = 'username="";expires=-1';
        }
    </script>
</body>

9.

<script>
        // Storage是HTML5 新增API
        var ls = localStorage;
        // ls.setItem('username', 'lisi');
        // ls.setItem('age', '18');
        // ls.setItem('sex', '男');
        // // ls.removeItem('age');
        // // ls.clear();
        // console.log(ls.key(1));
        // console.log(ls.getItem('username'));

        for (var i = 0; i < ls.length; i++) {
            console.log('key:' + ls.key(i) + '  value:' + ls.getItem(ls.key(i)));
        }

        // var ss = sessionStorage;
    </script>

<script type="text/javascript">
            //1.添加cookie-会话结束自动消失,没有设置过期时间。
            //key--value存储cookie值。
            /*document.cookie='name=zhangsan';
            document.cookie='age=100';
            document.cookie='sex=男';*/
            
            //2.添加cookie-带过期时间的。
        /*    var d=new Date();//获取当前的日期
            d.setDate(d.getDate()+10);//获取当前几号+10天,设置日期
            document.cookie='username=wangwu;expires='+d;*/
            
            
            //3.获取所有cookie
            //alert(document.cookie);//username=wangwu
            
            
        </script>

<script type="text/javascript">
            //1.添加cookie
            /*var d=new Date();
            d.setDate(d.getDate()+7);
            document.cookie='username=lisi;expires='+d;*/
            //md5和sha1  加密方式。
            function addcookie(key,value,days){
                var d=new Date();
                d.setDate(d.getDate()+days);
                document.cookie=key+'='+encodeURIComponent(value)+';expires='+d;
            }
            //addcookie('username','zhangsan',7);
            //addcookie('password',hex_md5('123456'),7);
            
            /*addcookie('name','wangwu',7);
            addcookie('age',100,7);
            addcookie('sex','男',7);*/
            
            //2.获取cookie:传入key,返回value
            //获取所有的cookie
            //alert(decodeURIComponent(document.cookie));//name=zhangsan; age=100; sex=男
            function getcookie(key){
                var cookievalue=decodeURIComponent(document.cookie).split('; ');//数组
                //console.log(cookievalue)//["name=zhangsan", "age=100", "sex=男"]
                for(var i=0;i<cookievalue.length;i++){
                    var arr=cookievalue[i].split('=');
                    if(key==arr[0]){
                        return arr[1];
                    }
                }
            }
            //alert(getcookie('name'));//zhangsan
            //alert(getcookie('age'));//100
            
            //3.删除cookie:Key值相同,存储时就会覆盖,存储一个cookie,将时间设为过去的时间。
            function delcookie(key){
                addcookie(key,'',-1);
            }
            
        </script>

<body>
        <form action="xss.php" method="post">
            请输入用户名:<input  name="username" autocomplete="off" value="" /><br/>
            <input type="submit" value="提交" />
            
        </form>
        
        <!--  "><script>alert(document.cookie)</script><!--  -->
        <script type="text/javascript">
            var inp=document.querySelector('input');
            inp.οnblur=function(){
                this.value=encodeURI(inp.value);
            }
        </script>
    </body>

<script type="text/javascript">
            //1.数组
            //数组存储cookie,直接将数组当中value直接存在。
            //也可以将数组转换成string进行存储--toString();
            //利用split方法将取出的cookie转换成数组
            //var arr=['apple','banana','orange'];
            //addcookie('shuiguo',arr,7);
            //console.log(getcookie('shuiguo').split(','));//["apple", "banana", "orange"]
            
            
            //2.对象
            var obj={
                a:1,
                b:2,
                c:3
            }
            //alert(obj);//[object Object]
            //addcookie('data',obj,7);//[object object]
            //如果将对象存入cookie,取出cookie又是对象???
            
            //JSON.stringify():将对象转换成json格式字符串。
            //console.log(obj);//{a: 1, b: 2, c: 3}
            //console.log(JSON.stringify(obj));//'{"a":1,"b":2,"c":3}'
            
            //addcookie('data',JSON.stringify(obj),10);
            //console.log(getcookie('data'));
            //console.log(typeof getcookie('data'));
            
            //JSON.parse:JSON格式的字符串转换为对象,具有json格式检测功能。
            //console.log(JSON.parse(getcookie('data')));
            
            
        </script>

<body>
        <fieldset id="" style="width:600px;">
            <legend>用户登录</legend>
            <p>
                <label for="">姓名:</label>
                <input type="text" id="username" autocomplete="off" />
            </p>
            <p>
                <label for="">密码:</label>
                <input type="password" id="password" />
            </p>
            <p>
                <input type="checkbox" id="check" />记住用户名和密码
            </p>
            <p>
                <input type="button" id="btn" value="登陆" />
            </p>
            
        </fieldset>
        <script src="cookie.js" type="text/javascript" charset="utf-8"></script>
        <script src="md5.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            var username=document.querySelector('#username');
            var password=document.querySelector('#password');
            var remember=document.querySelector('#check');
            var btn=document.querySelector('#btn');
            
            //判断cookie是否存在
            if(getcookie('user') && getcookie('pass')){
                username.value=getcookie('user');
                password.value=getcookie('pass');
                remember.checked=true;
            }
            
            
            btn.οnclick=function(){
                if(remember.checked){//选中
                    addcookie('user',username.value,7);
                    addcookie('pass',hex_md5(password.value),7);
                }else{
                    delcookie('user');
                    delcookie('pass');
                }
            }
            
        </script>
    </body>

<head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            img{
                width:300px;
                position: absolute;
            }
        </style>
    </head>
    <body>
        <img src="../Day 08/img/2.jpg" alt="" />
        <script src="cookie.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            
            var oImg=document.querySelector('img');
            
            if(getcookie('x') && getcookie('y')){
                oImg.style.left=getcookie('x')+'px';
                oImg.style.top=getcookie('y')+'px';
            }
            function drag(obj){
                var sx=0;
                var sy=0;
                obj.οnmοusedοwn=function(ev){
                    var ev=ev||window.event;
                    sx=ev.offsetX;
                    sy=ev.offsetY;
                    document.οnmοusemοve=function(ev){
                        var ev=ev||window.event;
                        obj.style.left=ev.clientX-sx+'px';
                        obj.style.top=ev.clientY-sy+'px';
                    };
                    document.οnmοuseup=function(){
                        document.οnmοusemοve=null;
                        document.οnmοuseup=null;
                        addcookie('x',obj.offsetLeft,10);
                        addcookie('y',obj.offsetTop,10);
                    }
                    
                    return false;//取消默认行为。
                }
            }
            drag(oImg);
        </script>
    </body>

function addcookie(key,value,days){
    var d=new Date();
    d.setDate(d.getDate()+days);
    document.cookie=key+'='+encodeURIComponent(value)+';expires='+d;
}

function getcookie(key){
    var cookievalue=decodeURIComponent(document.cookie).split('; ');
    for(var i=0;i<cookievalue.length;i++){
        var arr=cookievalue[i].split('=');
        if(key==arr[0]){
            return arr[1];
        }
    }
}

function delcookie(key){
    addcookie(key,'',-1);
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QiuShuiFuPing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值