我注意到我的ColdFusion会话cookie的奇怪行为,即域名,路径和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的预期行为。
任何人都可以解释这一点吗?
谢谢。
针对肖恩。
响应饼干返回初始请求www.domainname.com/sub是:
设置cookie的CFID = 123456;域= .domainname.com表示;到期日=星期五,07-Feb-2014 15:12:33 GMT;路径= /分; HttpOnly
Set Cookie CFTOKEN = 2cf168a89952feec%2D4DAC5903%2D1DD8%2DB71C%2D3B0166C2FDAF5D6B;域= .domainname.com表示;到期日=星期五,07-Feb-2014 15:12:33 GMT;路径= /分;仅Http
的后续请求任何其他页面(在比/子目录同级别或更深的任何页面),或在同一页(即刷新页面)发送下面的请求cookie字符串:
CFID = 191297 ; CFTOKEN = 2cf168a89952feec%2D4DAC5903%2D1DD8%2DB71C%2D0B0166C2FDAF5D6D; ASP.NET_SessionId = s43bplyduc0hkgintth4gcqh
通过后续的请求,你的意思是你刷新或你要去其他网页?如果有其他页面,它可能取决于您正在使用的路径和域参数的值。您可以将您正在使用的实际值和从服务器请求的页面路径放在一起,而不是向我们显示变量吗? –
@SeanCoyne请参阅我的编辑 – Michael
好的,那些是发送的标题。所以,第一对夫妇正在设置cookie。接下来的是浏览器加载的cookie。如果域和路径不匹配(你说他们这样做),那么浏览器不会发送它们,但是它发送它们,它的功能应该是它应该的。顺便说一句,如果您使用J2EE会话,您可能会对会话有更好的运气,它将设置jsessionid cookie而不是cfid和cftoken cookie。不确定你的用例是什么,但我总是使用J2EE会话,FWIW。 –