файл cookie устанавливается для www.example.com вместо example.com - PullRequest
1 голос
/ 18 декабря 2010

У меня есть Java-приложение, работающее под tomcat, которое запускается веб-сервером apache.В моем коде я установил cookie-домен как .example.com

, но мои cookie-файлы все еще отображаются на сайте www.example.com, а не на example.com в браузере клиента.Что такого странного, куки Google Analytics обнаруживаются под example.com, но мой собственный код не может хранить куки под example.com?

Сервер Apache настроен так, что запросы для example.com отображаются как www.example.comв адресной строке браузера клиента, если это связано с проблемой?Мне это нужно, в противном случае генерируются разные идентификаторы сессии для example.com и www.example.com, что плохо для моего приложения.

1 Ответ

0 голосов
/ 18 декабря 2010

Сервер Apache настроен так, что запросы на example.com отображаются как www.example.com в клиентском браузере адресная строка, если это связано с вопрос?

Я не уверен на 100%, но это похоже на корень проблемы. Как Apache заставляет клиентский браузер отображать www.example.com вместо example.com? Скорее всего, перенаправив каждый запрос для example.com на www.example.com. Когда браузер обрабатывает перенаправление, он отправляет запрос на www.example.com и с этого момента считает, что работает с www.example.com.

Теперь, что происходит, когда в заголовке ответа есть Set-Cookie? Это, очевидно, будет восприниматься как www.example.com. Нет никакого способа, которым браузер позволил бы такому cookie установить свой домен в .example.com, потому что это было бы проблемой безопасности. Представьте, что mysite.somefreehosting.com устанавливает cookie для домена .somefreehosting.com. Тогда someothersite.somefreehosting.com получит этот cookie, что может привести к большим проблемам. Стандарт определяет, что такие куки должны быть отклонены, но я не удивлюсь, если некоторые браузеры достаточно умны, чтобы обрабатывать такие случаи и рассматривать .example.com как www.example.com.

Конечно, я рекомендую вам проверить, что именно ваш сайт отправляет в браузер, отправив запрос с чем-то вроде скрипта lwp-request. Вы увидите, какие перенаправления происходят и какие заголовки на самом деле установлены в ответе, например:

alqualos@ubuntu:~$ lwp-request -sSed http://google.com/
GET http://google.com/ --> 301 Moved Permanently
GET http://www.google.com/ --> 302 Found
GET http://www.google.co.il/ --> 200 OK
Cache-Control: private, max-age=0
Connection: close
Date: Sat, 18 Dec 2010 18:54:57 GMT
Server: gws
Content-Type: text/html; charset=windows-1255
Content-Type: text/html; charset=windows-1255
Expires: -1
Client-Date: Sat, 18 Dec 2010 18:54:57 GMT
Client-Peer: 173.194.37.104:80
Client-Response-Num: 1
Set-Cookie: PREF=ID=368e9cfd56643257:FF=0:TM=1292698497:LM=1292698497:S=s-Jur84NgaNH5Mzx; 
  expires=Mon, 17-Dec-2012 18:54:57 GMT; path=/; domain=.google.co.il
Set-Cookie: NID=42=bZ6goDV_b2MiWlTMONwiijaON5U_TBGB2_yNheonEwA1GVLU77EhyfUhk9Wvj70xTFrpvGy4s_aBp1UZtvRRnsnYjacjz_UVx0_iSr9R3nYXMyRtwkS5qV98_Egb16pZ; 
  expires=Sun, 19-Jun-2011 18:54:57 GMT; path=/; domain=.google.co.il; HttpOnly
Title: Google
X-XSS-Protection: 1; mode=block
...