Tworzenie pliku cookie JavaScript na domenie i odczytywanie go między sub domenami
Poniżej znajduje się plik cookie JavaScript, który jest zapisywany na komputerze użytkownika przez 12 miesięcy.
Po ustawieniu pliku cookie w naszej głównej domenie, takiej jak example.com
, jeśli użytkownik odwiedzi subdomenę, taką jak test.example.com
, musimy nadal identyfikować aktywność użytkownika w naszej "testowej" subdomenie.
Ale z obecnym kodem, jak tylko opuszczą www.example.com
i odwiedzą test.example.com
, nie są już oznaczani jako "HelloWorld".
Czy ktoś byłby w stanie pomóc z moim kodem, aby plik cookie był czytaj w subdomenach?
<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>
4 answers
Po prostu ustaw atrybuty domain
i path
na swoim pliku cookie, takie jak:
<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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-15 01:17:40
Chcesz:
document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;
Zgodnie z RFC 2109 , aby plik cookie był dostępny dla wszystkich subdomen, musisz umieścić .
przed swoją domeną.
Ustawienie ścieżki= / spowoduje, że plik cookie będzie dostępny w całej podanej domenie (aka .example.com
).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-02 20:43:21
document.cookie = "testCookie=cookieval; domain=." +
location.hostname.split('.').reverse()[1] + "." +
location.hostname.split('.').reverse()[0] + '; path=/"
Jest to ogólne rozwiązanie, które pobiera domenę główną z obiektu location i ustawia plik cookie. Odwrócenie jest spowodowane tym,że nie wiesz, ile masz subdomen, jeśli w ogóle.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-12 17:17:29
Możesz również użyć MDN JavaScript Cookie Framework i zrobić:
docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-28 05:11:22