Cookies 如何在cfscript中设置cookie的过期日期

Cookies 如何在cfscript中设置cookie的过期日期,cookies,coldfusion,Cookies,Coldfusion,似乎无法在cfscript中设置cookie的过期日期。有什么提示吗?这是coldfusion 9顺便说一下。与等效的只提供Cookie作用域内存变量的直接赋值。不能使用直接分配来设置存储在用户系统上的持久cookie。因此,如果您想使用纯脚本CFML设置永久Cookie,则必须编写一个包装函数。我编写了这个UDF。请注意,它的httpOnly仅为CF9,因此您希望在CF8下删除它 <cffunction name="setCookie" access="public" returnTyp

似乎无法在cfscript中设置cookie的过期日期。有什么提示吗?这是coldfusion 9顺便说一下。

等效的
只提供Cookie作用域内存变量的直接赋值。不能使用直接分配来设置存储在用户系统上的持久cookie。因此,如果您想使用纯脚本CFML设置永久Cookie,则必须编写一个包装函数。

我编写了这个UDF。请注意,它的httpOnly仅为CF9,因此您希望在CF8下删除它

<cffunction name="setCookie" access="public" returnType="void" output="false">
<cfargument name="name" type="string" required="true">
<cfargument name="value" type="string" required="false">
<cfargument name="expires" type="any" required="false">
<cfargument name="domain" type="string" required="false">
<cfargument name="httpOnly" type="boolean" required="false">
<cfargument name="path" type="string" required="false">
<cfargument name="secure" type="boolean" required="false">
<cfset var args = {}>
<cfset var arg = "">
<cfloop item="arg" collection="#arguments#">
    <cfif not isNull(arguments[arg])>
        <cfset args[arg] = arguments[arg]>
    </cfif>
</cfloop>

<cfcookie attributecollection="#args#">
</cffunction>

<cfscript>
    if(!structKeyExists(cookie, "hitcount")) setCookie("hitcount",0);
    setCookie("hitcount", ++cookie.hitcount);
    setCookie("foreverknight",createUUID(),"never"); 
</cfscript>

<cfdump var="#cookie#">

如果(!structKeyExists(cookie,“hitcount”))setCookie(“hitcount”,0);
setCookie(“hitcount”++cookie.hitcount);
setCookie(“永远的骑士”,createUUID(),“从不”);

CF9.0.1没有CFCookie cfscript的等效版本,但是如果您想使用CFFUNCTION,除了添加对CF6、7、8和9的HTTPOnly支持之外,您还可以这样做。您可以创建一个UDF,但它不是CFSCRIPT格式的(没有大的损失)

这里有一个很好的关于如何做的书面说明(带有源代码): (我不知道为什么在CFLib.org上还没有这个功能。)

我最初使用CFHEADER创建cookie时遇到的一个问题是,它允许混合大小写名称,而ColdFusion只能读取、更新和删除具有大写名称的cookie

要测试/查看Firefox中的Cookie并验证过期日期(或HTTPOnly设置),请安装FireCookie Firebug扩展: