跨域简介

时间:2017-08-30 18:02:54   收藏:0   阅读:325

跨域简介

什么是跨域

  1. 什么是域?

    • 在这里指的是域名
  2. 为什么要跨域?

    • 因为浏览器在不同域之间是不能不作处理直接获取数据的,为什么不可以呢?因为浏览器有一种机制,叫同源策略。
  1. 同源策略

    • 同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

    • 同源是指域名、协议、端口相同

##如何解决跨域问题?

// 获取cookie
    function getCookie(name) {
        var cookieName = encodeURIComponent(name)+ ‘=‘,
            cookieStart = document.cookie.indexOf(cookieName),
            cookieValue = null;
        if(cookieStart > -1){
            var cookieEnd = document.cookie.indexOf(‘;‘,cookieStart);
            if(cookieEnd == -1){
                cookieEnd = document.cookie.length;
            }
            // substring(start, end) 方法用于提取字符串中介于两个指定下标之间的字符,包括 start 处的字符,但不包括 end 处的字符。
            // substr(start, [length) 方法用于返回一个从指定位置开始的指定长度的子字符串,包含指定开始位置, start为负值,则倒过来截取即可
            cookieValue = decodeURIComponent(document.Cookie.substring(cookieStart + cookieName.length,cookieEnd));
        }
        return cookieValue;
    }    

 

 

// 写入Cookie
    // new Date()中传的参数, 1、new Date(2016, 5, 10, 10, 10, 10); 2、new Date(时间戳);我们可以传0,然后则可以删除Cookie
    function setCookie(name, value, duration, path, domain, secure) {
        // name + value
        var cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value);
        // 生存期,此处参数设为天数
        var oDate = new Date();
        oDate.setDate(oDate.getDate() + duration);
        console.log(oDate);
        cookieText = cookieText + ";expires=" + oDate.toGMTString();
        // path
        if(path) {
            cookieText = cookieText + ‘;path=‘ + path;
        }
        // 作用域
        if(domain) {
            cookieText = cookieText + ‘;domain=‘ + domain; 
        }
        // secure
        if(secure) {
            cookieText = cookieText + ‘;secure=‘ + secure;
        }
        document.cookie = cookieText;
        console.log(cookieText);
    }
    eg: setCookie(‘name‘, ‘duyi‘, 7);

 

 
/*将value设为空,将生命期设为0,结束存在*/
    function unsetcookie(name,path,domain,secure){
        setcookie(name,‘‘, 0,path,domain,secure)
    }

 

 

原文:http://www.cnblogs.com/Walker-lyl/p/7454547.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!