如何用js实现跨域获取cookie

如何用js实现跨域获取cookie,第1张

正常情况下,浏览器禁止跨域获取cookie

一般通过sso服务可以实现取得跨域cookie,思路如下:

域A页面访问位于域A的服务器,对权限进行验证

域A服务器于域B服务器通信,记录一个唯一的加密串用作身份验证域(并将cookie信息发送给域B服务器)

域A服务器返回302跳转,跳转到域B下,并将加密串作为url的一部分

页面由域A跳转到域B,域B服务器通过加密串获取到事先从域A服务器上得到的cookie信息,并在响应头中添加set-cookie字段设置cookie

cookie的写入和读取的方式是有所不同的,写入的时候可以用 documentcookie="abc=123"; 这样的形式,但是读取的时候,documentcookie是包含网页的全部cookie(如果网页是从别的页面跳转来的,还包括跳转前网页的cookie)以及后台服务器的session参数(比如登录状态什么的,当然是加密后的)等等,形式类似于下面这样:

ASPSESSIONIDASSQTACT=JAFJEDMAABBPKOGKCGEKEHID; admin=OK; wzid=13; codym=222; cuym0=0; cuym206=35; csdym=207; idym=206; cd=ym; abc=123

也就是说所有的cookie键值对是以"; "(分号加一个空格)分隔的,要想获得“abc”的值,就要先用"; "分割为数组,再遍历数组,把每个元素再用"="分割,然后再对比等号左边元素是否为"abc"来获得右边的值"123"。

但是,正常情况下documentcookiesplit("=")[1]也不应该是undefined啊,我估计你这个jsonobjToken是个空值,所以才会这样。你可以在赋值前先输出jsonobjToken看看是什么值。

思路:使用js实现

1背景音乐默认为关闭的

2设定某cookie值,用js读写cookie(不过换了机器仍然会回到初始状态)

3用js配合dom播放\停止音乐

读写cookie代码如下

//写Cookies

function SetCookie(name,value)

{

var argv=SetCookiearguments;

var argc=SetCookieargumentslength;

var expires=(2<argc)argv[2]:null;

var path=(3<argc)argv[3]:null;

var domain=(4<argc)argv[4]:null;

var secure=(5<argc)argv[5]:false;

documentcookie=name+"="+escape(value)+((expires==null)"":("; expires="+expirestoGMTString()))+((path==null)"":("; path="+path))+((domain==null)"":("; domain="+domain))+((secure==true)"; secure":"");

}

//读Cookies

function GetCookie(Name)

{

var search = Name + "=";

var returnvalue = "";

if (documentcookielength > 0)

{

offset = documentcookieindexOf(search);

if (offset != -1)

{

offset += searchlength;

end = documentcookieindexOf(";", offset);

if (end == -1)

end = documentcookielength;

returnvalue=unescape(documentcookiesubstring(offset,end));

}

}

return returnvalue;

}

这样写

<script>

 

var page = <%= requestgetParameter("page") %> ;

if (page == 2) {

    var istz = getCookie("istz"); //获取cookie

    if (istz == null) { //如果cookie为null

        setCookie("istz", "yesTz", 10); //设置cookie

        locationhref = "hhtml"; //跳转到指定链接

    }

}

 

 //设置cookie

 

function setCookie(name, value, expiredays) {

    var ExpireDate = new Date();

    ExpireDatesetTime(ExpireDategetTime() + (expiredays  60  1000));

    documentcookie = name + "=" + escape(value) + ((expiredays == null)  "" : "; expires=" + ExpireDatetoGMTString());

}

 

 //获取cookie

 

function getCookie(name) {

    var strCookie = documentcookie;

    var arrCookie = strCookiesplit(";");

    for (var i = 0; i < arrCookielength; i++) {

        var arr = arrCookie[i]split("=");

        if (arr[0] == name) return arr[1];

    }

    return null;

}

 

 </script>

以上就是关于如何用js实现跨域获取cookie全部的内容,包括:如何用js实现跨域获取cookie、新手对于JS保存、读取cookie的疑问。、js代码读写cookie的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9840107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存