Cookies ColdFusion 10 CFCookie不尊重域属性

Cookies ColdFusion 10 CFCookie不尊重域属性,cookies,coldfusion,coldfusion-10,cfcookie,Cookies,Coldfusion,Coldfusion 10,Cfcookie,我有一个Application.cfc,具有以下设置: <cfset THIS.Name = "Test01" /> <cfset THIS.ApplicationTimeout = CreateTimeSpan(1,0,0,0) /> <cfset THIS.sessionTimeout = CreateTimeSpan(1,0,0,0) /> <cfset THIS.clientManagement = false /> <cfset T

我有一个Application.cfc,具有以下设置:

<cfset THIS.Name = "Test01" />
<cfset THIS.ApplicationTimeout = CreateTimeSpan(1,0,0,0) />
<cfset THIS.sessionTimeout = CreateTimeSpan(1,0,0,0) />
<cfset THIS.clientManagement = false />
<cfset THIS.SessionManagement = true />
<cfset THIS.SetClientCookies = false />
<cfset THIS.setDomainCookies = false />
无论我在域或路径中输入什么值,它总是发送相同的头。如果我尝试使用
cfheader
它只会不发送任何内容。我唯一能让它发送没有域值的cookie头的方法是将
SetClientCookies
设置为true:

Set-Cookie: CFID=6391; Expires=Fri, 12-Jun-2043 22:21:38 GMT; Path=/; HttpOnly
然而,我不能再通过使用
StructDelete
CFCookie
摆脱cookie,属性现在过期(实际上它创建了第二组cookie)


我的主要目标是只发送没有域的CFID和CFTOKEN Cookie(或者至少没有前导周期,例如test01.domain.net)

为了修改代码中的会话Cookie,您应该在Application.cfc伪构造函数中添加以下内容:

<cfset this.sessioncookie.disableupdate = false>


这也可以在CF administrator的“Memory variables”(内存变量)部分下的服务器级别进行控制。

是的,通过将任何域值剥离到
.domain.tld
,这似乎做得太多了。见:


我不知道为什么,但解决方法是使用

多亏了Henry,我在使用
时仔细查看了CF10发送的头,再次了解了如何使用CFHeader。CF10省略了发送到浏览器的标题中的域值,因此我复制了发送的标题CF10并将其放在一个cfheader中:

<cfheader name="Set-Cookie"  value="CFID=#session.CFID#; Expires=#GetHttpTimeString(DateAdd("yyyy", 40, Now()))#; Path=/">
<cfheader name="Set-Cookie"  value="CFToken=#session.CFToken#; Expires=#GetHttpTimeString(DateAdd("yyyy", 40, Now()))#; Path=/">
发送此邮件:

Set-Cookie: CFID=7191; Domain=test01.domain.net; Expires=Sat, 04-Jul-2043 13:24:38 GMT; Path=/
Set-Cookie: CFToken=33b984d7a56f6356-0B97F3CF-3048-3344-AABF2B698F4B8B02; Domain=test01.domain.net; Expires=Sat, 04-Jul-2043 13:24:38 GMT; Path=/

浏览器收到的是
.test01.domain.net
,这正是我想要避免的。

你看过这篇文章了吗?在CF10上,只需在Application.cfc.setting
this.sessioncokie.httponly=true
中设置
this.sessioncokie.httponly=true
this.SetClientCookies=false
,当name属性为
CFID
CFTOKEN
时,CF仍然忽略任何cfcookie属性。原始服务器在CFAdmin中将HTTPOnly设置为true。请参阅:No dice,CF10劫持该命令并发送相同的旧cookie头。我已经让步,决定用另一种方式来看待我最初的问题(在会话中而不是在cookie中),简单地销毁会话(
StructClear(session)
),让CF10将CFID/CFTOKEN分配给新创建的会话范围。
<cfheader name="Set-Cookie"  value="CFID=#session.CFID#; Expires=#GetHttpTimeString(DateAdd("yyyy", 40, Now()))#; Path=/">
<cfheader name="Set-Cookie"  value="CFToken=#session.CFToken#; Expires=#GetHttpTimeString(DateAdd("yyyy", 40, Now()))#; Path=/">
<cfheader name="Set-Cookie"  value="CFID=#session.CFID#; Expires=#GetHttpTimeString(Now()-1)#; Path=/">
<cfheader name="Set-Cookie"  value="CFToken=#session.CFToken#; Expires=#GetHttpTimeString(Now()-1)#; Path=/">
<cfset StructClear(session)>
<cflocation url="/" addtoken="no">
<cfheader name="Set-Cookie"  value="CFID=#session.CFID#; Domain=test01.domain.net;Expires=Sat, 04-Jul-2043 13:24:38 GMT; Path=/">
<cfheader name="Set-Cookie"  value="CFToken=#session.CFToken#; Expires=Sat, 04-Jul-2043 13:24:38 GMT; Path=/">
Set-Cookie: CFID=7191; Domain=test01.domain.net; Expires=Sat, 04-Jul-2043 13:24:38 GMT; Path=/
Set-Cookie: CFToken=33b984d7a56f6356-0B97F3CF-3048-3344-AABF2B698F4B8B02; Domain=test01.domain.net; Expires=Sat, 04-Jul-2043 13:24:38 GMT; Path=/