我需要在主域中设置一个cookie,然后阅读然后从子域中删除该cookie。但是我还需要将来在该域上再次设置该Cookie,并稍后在子域上读取它。基本上是单向通信流。我无法让主域处理未设置Cookie的问题,因为用户访问主域和子域之间可能要花费几个月的时间。
我在域上设置一个cookie,如下所示:
document.cookie = "mycookie=testcookie;domain=example.com;max-age=31536000;";
我可以在另一个子域上访问它,例如:
document.cookie.replace(/(?:(?:^|.*;\s*)testcookie\s*\=\s*([^;]*).*$)|^.*$/, "$1");
然后我尝试从子域中杀死它:
document.cookie = "mycookie=;domain=example.com;max-age=0;";
那是行不通的。 Cookie仍然设置。
但是,将其设置为这样会清除它:
document.cookie = "mycookie=;domain=example.com;max-age=31536000;";
现在从子域中请求时返回""
。
但是...如果我返回到域并再次设置它,并且可以看到已经设置,则子域仍返回""
我是否缺少某种……的cookie层次结构?我不确定这是如何表现的或如何克服的。
答案 0 :(得分:1)
要启用此功能,您必须在根域之前放置句点Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$3" Then 'if cell B3 has changed
Application.EnableEvents = False ' disable events to prevent this event handler being called in a possibly infinite loop
ProcessLineNumberValidation ' process your range
Application.EnableEvents = True ' enable events back on
End If
End Sub
,如下所示:.
这很重要,因为设置了cookie标准化的方式。此格式应与大多数现代浏览器兼容。
此外,跨不同子域访问或修改Cookie时,路径必须相同。最简单的方法是仅使用域的根路径.example.com
。例如,如果您从/
设置cookie并尝试从sub1.example.com/page1
访问它,即使您将域设置为sub2.example.com/page2
,也必须在其中设置.example.com
以便从其他子域上的任何路径访问和修改它。
最终:
path=/
将允许您对其进行设置,并且
document.cookie = "mycookie=testcookie;domain=.example.com;path=/;max-age=31536000";
将允许您删除它。