在一个域上创build一个JavaScript Cookie,并通过子域读取它
以下是在用户计算机上写入12个月的JavaScript Cookie。
在我们的主域名(如example.com
上设置cookie后,如果用户访问像test.example.com
这样的子域名,我们需要继续在我们的“testing”子域中标识用户的活动。
但是使用当前的代码,只要他们离开www.example.com
并访问test.example.com
,他们就不再被标记为“HelloWorld”。
任何人都可以帮助我的代码,允许Cookie跨子域读取?
<script type="text/javascript"> var cookieName = 'HelloWorld'; var cookieValue = 'HelloWorld'; var myDate = new Date(); myDate.setMonth(myDate.getMonth() + 12); document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate; </script>
只需在您的Cookie上设置domain
和path
属性,如:
<script type="text/javascript"> var cookieName = 'HelloWorld'; var cookieValue = 'HelloWorld'; var myDate = new Date(); myDate.setMonth(myDate.getMonth() + 12); document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate + ";domain=.example.com;path=/"; </script>
你要:
document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;
根据RFC 2109 ,要有一个cookie可用于所有的子域名,你必须把一个.
在你的域名前面。
设置path= /将使cookie在整个指定的域(即.example.com
)中可用。
document.cookie = "testCookie=cookieval; domain=." + location.hostname.split('.').reverse()[1] + "." + location.hostname.split('.').reverse()[0] + '; path=/"
这是一个通用的解决scheme,它从位置对象获取根域并设置cookie。 倒退是因为你不知道你有多less个子域名。
您也可以使用MDN JavaScript Cookie框架并执行以下操作:
docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');
- Android WebView Cookie问题
- 未初始化的常量ActionDispatch :: Session :: EncryptedCookieStore(NameError)
- 在PHP中session_unset()和session_destroy()有什么区别?
- jQuery $ .cookie不是一个函数
- 如何删除Java Servlet中的Cookie
- 每个用户只能显示一次popup窗口
- 如何使用Fiddler在请求中设置Cookie?
- 当需要Windows安全时,下载文件的臭名昭着但尚未解决的问题
- 如何在tomcat / java webapps中configurationHttpOnly cookie?