gpt4 book ai didi

javascript - 跨子域 Cookie

转载 作者:行者123 更新时间:2023-11-30 10:06:50 25 4
gpt4 key购买 nike

我正尝试跨子域携带我的 cookie,但我似乎无法携带它。我希望 cookie 中的域是 .apus.edu,但 cookie 是 catalog.apus.edu、amu.apus.edu 或 apu.apus.edu

这是我的起始页。您将被分配一个默认 cookie http://catalog.apus.edu/sitecat/cookie.htm

当您点击 AMU 时,您将获得 AMU Cookie 等。

当您到达控制页面时,您应该有 AMU 或 APU,否则我会为您指定默认值。

我真的希望域是 .apus.edu 而不是每个子域。

function Set_Cookie( name, value, expires, path, domain, secure ) {
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );

/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires ) { expires = expires * 1000 * 60 * 60 * 24; }
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}

function Get_Cookie( check_name ) {
// first we'll split this cookie up into name/value pairs
// note: document.cookie only returns name=value, not the other components
var a_all_cookies = document.cookie.split( ';' );
var a_temp_cookie = '';
var cookie_name = '';
var cookie_value = '';
var b_cookie_found = false; // set boolean t/f default f

for ( i = 0; i < a_all_cookies.length; i++ ) {
// now we'll split apart each name=value pair
a_temp_cookie = a_all_cookies[i].split( '=' );

// and trim left/right whitespace while we're at it
cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

// if the extracted name matches passed check_name
if ( cookie_name == check_name ) {
b_cookie_found = true;
// we need to handle case where cookie has no value but exists (no = sign, that is):
if ( a_temp_cookie.length > 1 ) {
cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
}
// note that in cases where cookie is initialized but no value, null is returned
return cookie_value;
break;
}
a_temp_cookie = null;
cookie_name = '';
}
if ( !b_cookie_found ) {
return null;
}
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
if ( Get_Cookie( name ) ) document.cookie = name + "=" +
( ( path ) ? ";path=" + path : "") +
( ( domain ) ? ";domain=" + domain : "" ) +
";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

var CookieNameDefault = 'Default Cookie';
var CookieValueDefault = 'Default Cookie';

var CookieNameAMU = 'AMU Cookie';
var CookieValueAMU = 'AMU Cookie';

var CookieNameAPU = 'APU Cookie';
var CookieValueAPU = 'APU Cookie';

var cAMU = Get_Cookie(CookieNameAMU);
var cAPU = Get_Cookie(CookieNameAPU);

if (window.location.href.indexOf("www.amu.apus.edu/_test/sitecat/cookie.htm") >= 0) { //delete APU & Default cookie and set AMU cookie
Delete_Cookie(CookieNameAPU, '/', '');
Delete_Cookie(CookieNameDefault, '/', '');
Set_Cookie(CookieNameAMU, CookieValueAMU, '', '/', '', '');
alert(CookieNameAMU);
}

if (window.location.href.indexOf("www.apu.apus.edu/_test/sitecat/cookie.htm") >= 0) { //delete AMU & Default cookie and set APU cookie
Delete_Cookie(CookieNameAMU, '/', '');
Delete_Cookie(CookieNameDefault, '/', '');
Set_Cookie(CookieNameAPU, CookieValueAPU, '', '/', '', '');
alert(CookieNameAPU);
}

if (cAMU || cAPU) {
// check if you have any of these two cookies if so then do nothing
}
else { // if you don't have any cookie then lets give you the default cookie
Set_Cookie( CookieNameDefault, CookieValueDefault, '', '/', '', '' );
alert(CookieNameDefault);
}

最佳答案

好吧,我不是 100% 确定那个巨大的代码块中发生了什么。但是,如果您将 cookie 域设置为 .apus.edu,则 *.apus.edu 将可用。

即你在哪里:

Set_Cookie(CookieNameAMU, CookieValueAMU, '', '/', '', '');

应该是

Set_Cookie(CookieNameAMU, CookieValueAMU, '', '/', '.apus.edu', '');

关于javascript - 跨子域 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28633588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com