正常情况下,浏览器禁止跨域获取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的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)