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>
Author: Brett DeWoody, 2011-04-15

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>
 176
Author: aroth,
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).

 24
Author: Mike Lewis,
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.

 3
Author: caseyjustus,
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');
 1
Author: rebagliatte,
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