javascript - JavaScript cookie 不适用于子域
问题描述
我有一个 cookie 授权横幅,带有一个标有“知道了!”的按钮 这驳回了它。我通过设置一个cookie来做到这一点。
要设置 cookie,我在我的<head>
:
<script>
function setCookie(cname, cvalue, exdays)
{
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
var domain = ".brokenhearts.ml";
var security = "secure";
var location = "/";
document.cookie = cname + "=" + cvalue + ";" + expires + ";" + location + ";" + domain + ";" + security;
}
</script>
我已将其设置为在单击按钮时执行:
var privacyValue = "yes";
setCookie("privacy", privacyValue, 365);
问题是,当我在 Chrome 中检查 cookie 时,它会显示如下内容:
如您所见,cookie 仅针对 www.brokenhearts.ml 而不是为其子域设置。我希望为所有子域设置 cookie。
我尝试将域设置为“brokenhearts.ml”的cookie,但它仍然只为www.brokenhearts.ml设置。
解决方案
设置 cookie 时,您的域必须采用.domain.com
– 点和根域的格式,并且path=/
始终为 。
如果你不设置path=/
,自动路径将被保存为 cookie 的保存位置——因此它不能跨任何子域访问。
//variables
var LastReportGenerated="Jul 11 2013",
baseDomain = '.cssjunction.com',
expireAfter = new Date();
//setting up cookie expire date after a week
expireAfter.setDate(expireAfter.getDate() + 7);
//now setup cookie
document.cookie="Report={'ReportName':'MainReport', 'lastGenerated':" + LastReportGenerated + "}; domain=" + baseDomain + "; expires=" + expireAfter + "; path=/";
来源:
推荐阅读
- node.js - 使用带有过滤器的 Mongoose .find() 调用 API 不返回任何内容?
- arrays - 如何访问深层嵌套的 json 即转换为 json 的肥皂 xml 响应
- python - 在 python 上做语音助手
- php - 当 new DateTime() 不应该在没有参数的情况下调用时抑制不必要的@throws 注释?
- jquery - 使用 reCAPTCHA 和密码管理器自动登录
- c# - 如何在隐藏按钮上执行 Click-Event
- python - 张量流中softmax的成本函数
- ios - SwiftUI MVVM:父视图更新时重新初始化子视图模型
- php - 如何使用php在页面角落显示用户登录信息
- android - 如何访问 SensorManager 未列出的传感器?