2014-02-06 4 views
2

Я замечаю странное поведение с моими сеансовыми сеансами ColdFusion, в результате чего атрибуты домена, пути и httponly не сохраняются.Странное поведение cookie сеанса

В моем файле application.cfc у меня есть this.setclientcookies значение false.

В моем onSessionStart случае я тогда следующий код:

<cfset sessionRotate()> 
<cfcookie name="CFID" value="#session.cfid#" path="#application.sessioncookiespath#" domain="#application.sessioncookiesdomain#" httponly="yes"> 
<cfcookie name="CFTOKEN" value="#session.cftoken#" path="#application.sessioncookiespath#" domain="#application.sessioncookiesdomain#" httponly="yes"> 

В первый раз, когда я посещаю страницу печенье CFID и CFTOKEN посылают в браузер с правильными значениями, домены, пути срока годности и т.д. .

Но при просмотре файлов cookie запроса для последующих запросов все, кроме значения cookie, было потеряно.

Если я закрою браузер, откройте его и перейдите на страницу, то те же файлы cookie будут отправлены на сервер, и поэтому я получаю один и тот же сеанс вместо ожидаемого поведения браузера, удаляющего файлы cookie при закрытии.

Можно ли пролить свет на это?

Спасибо.


В ответ на Шон.

печенье Response возвращается на первоначальный запрос на www.domainname.com/sub являются:

Set Cookie CFID = 123456; Домен = .domainname.com; Expires = Fri, 07-Feb-2014 15:12:33 GMT; Path =/к югу; HttpOnly

Set Cookie CFTOKEN = 2cf168a89952feec% 2D4DAC5903% 2D1DD8% 2DB71C% 2D3B0166C2FDAF5D6B; Домен = .domainname.com; Expires = Fri, 07-Feb-2014 15:12:33 GMT; Path =/к югу; HttpOnly

Последующие запросы на любой другой странице (любой страницы на том же уровне или глубже, чем/к югу от каталога) или той же странице (то есть обновить страницу) отправить следующий запрос куки строку:

CFID = 191297 ; CFTOKEN = 2cf168a89952feec% 2D4DAC5903% 2D1DD8% 2DB71C% 2D0B0166C2FDAF5D6D; ASP.NET_SessionId = s43bplyduc0hkgintth4gcqh

+0

К последующим запросам, вы имеете в виду вы обновить или вы собираетесь на другие страницы? Если другие страницы, это может зависеть от того, что значение аргументов пути и домена вы используете. Вместо того, чтобы показывать нам переменные, можете ли вы просто указать фактические значения, которые вы используете, и пути к страницам, которые вы запрашиваете с сервера? –

+0

@SeanCoyne, пожалуйста, ознакомьтесь с моими изменениями – Michael

+1

ОК, это отправленные заголовки. Итак, первая пара устанавливает файлы cookie. Последующие - это файлы cookie, загружаемые браузером. Если домен и путь не совпадают (что вы сказали, что они делают), браузер не будет отправлять их, но он отправляет их так, он работает так, как должен. В стороне, вам, вероятно, повезет с вашими сессиями, если вы будете использовать J2EE-сессии, которые будут устанавливать cookie jsessionid вместо файлов cfid и cftoken. Не уверен, что такое ваш вариант использования, но я всегда использую сессии J2EE, FWIW. –

ответ

Смежные вопросы