我注意到我的ColdFusion会话cookie的奇怪行为,其中不保留域,路径和httponly属性。
在我的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将被发送到服务器,因此我得到相同的会话,而不是浏览器在关闭时删除cookie的预期行为。
有人可以对此有所了解吗?
感谢。
回应肖恩。
首次请求返回www.domainname.com/sub时返回的响应cookie是:
设置Cookie CFID = 123456;域= .domainname.com表示; Expires = Fri,07-Feb-2014 15:12:33 GMT;路径= /分;仅Http
设置Cookie CFTOKEN = 2cf168a89952feec%2D4DAC5903%2D1DD8%2DB71C%2D3B0166C2FDAF5D6B;域= .domainname.com表示; Expires = Fri,07-Feb-2014 15:12:33 GMT;路径= /分;仅Http
对任何其他页面(与/ sub目录相同或更深的任何页面)或同一页面(即刷新页面)的后续请求发送以下请求cookie字符串:
CFID = 191297; CFTOKEN = 2cf168a89952feec%2D4DAC5903%2D1DD8%2DB71C%2D0B0166C2FDAF5D6D; ASP.NET_SessionId = s43bplyduc0hkgintth4gcqh