с
файлами cookie кажется простой проблемой, поскольку вам нужно указать только атрибут «Домен» в качестве имени корневого домена указанного веб-сайта. Однако во время фактического использования автор столкнулся с некоторыми проблемами, на которые действительно стоит обратить внимание.
Файл cookie в главном доменном имени www. Создайте его и запишите атрибут «Домен», например: (Для удобства отладки все следующие коды являются кодами asp)
Write.asp
программный код
<%
Response.Cookies(CookieName)("ИмяПользователя") = "SunBird"
Response.Cookies(CookieName)("Пароль") = "xyz1234"
Response.Cookies(CookieName).Домен = "xxxx.com"
%>
Read.asp
для чтения файлов cookie размещается в том же каталоге.
программный код
<%
Ответ.Запрос на запись.Cookies(CookieName)("Имя пользователя")
Ответ.Запрос на запись.Cookies(CookieName)("Пароль")
%>
Затем поместите документ Read.asp на другой сайт субдомена с тем же кодом, что и выше. Наконец, мы создаем еще один Clear.asp для очистки файлов cookie и размещаем его под основным доменным именем
Clear.asp.
программный код
<%
Response.Cookies(CookieName)("ИмяПользователя") = ""
Response.Cookies(CookieName)("Пароль") = ""
Response.Cookies(CookieName).Домен = "xxxx.com"
%>
Теперь вы можете протестировать его с помощью следующей последовательности выполнения: Write.asp -> Read.asp основного имени домена -> Read.asp имени субдомена. Любая страница Read.asp может прочитать значение файла cookie, созданного пользователем. Write.asp. Затем запустите Clear.asp, чтобы очистить его, все в порядке, на http://bizhi.downcodes.com/ вроде нет проблем.
Но при применении этого метода к реальным сайтам возникают проблемы.
Описание проблемы:
При первом входе в систему все в порядке. Любое имя поддомена может получить доступ к файлам cookie, хранящимся в имени основного домена. Однако после выхода из системы файлы cookie имени поддомена удаляются, но файлы cookie основного. Имя домена по-прежнему сохраняется. Основное доменное имя принудительно удаляется. После установки файла cookie, независимо от того, как вы входите в систему по основному доменному имени, файл cookie не может быть сохранен, если вы не закроете браузер и не откроете его снова.
После многих попыток я случайно обнаружил проблему. Ниже приводится процесс тестирования.
Создайте страницу Write2.asp и поместите ее под основным доменным именем.
программный код
<%
Response.Cookies(CookieName)("TEST_COOKIE") = "TEST_COOKIE"
%>
Шаг 1. После закрытия браузера выполните следующие действия: Write.asp -> Read.asp основного имени домена -> Read.asp имени поддомена. Любой Read.asp здесь читается нормально.
Шаг 2: Clear.asp --> Read.asp основного доменного имени --> Read.asp имени субдомена. Здесь операция очистки прошла успешно.
Шаг 3: Write.asp --> Write2.asp --> Имя основного домена Read.asp --> Имя поддомена Read.asp На этом этапе оба файла Read.asp могут считывать значение файла cookie.
Шаг 4. Повторно выполните шаг 2 и обнаружите, что основное доменное имя Read.asp по-прежнему выводит значение, а значение Read.asp под именем субдомена было удалено.
На основе приведенного выше теста мы резюмируем следующие моменты, на которые необходимо обратить внимание при использовании файлов cookie в разных доменах:
1. Если у вас есть группа файлов cookie (или словарь файлов cookie) и вы используете атрибут «Домен» для указания имени домена, когда вы изменить или добавить новых участников в группу. При добавлении обязательно добавьте атрибут Resonse.Cookies(CookieName).Domain после операции.
2. Если в этом нет необходимости, не изменяйте группу файлов cookie настроенного домена. Для создания нового файла cookie напрямую используйте Response.Cookies("CookieText") = CookieValue.