其他代码可以读取CFHEADER值吗?

时间:2010-06-15 11:01:19

标签: http coldfusion http-headers

代码

<cfheader name="Test" value="1">
<cfheader name="Test" value="2">

导致标题“Test:2”被发送到浏览器(使用HttpFox看到)。

第二行代码是否有办法确定是否已使用CFHEADER编写了具有相同名称的标头?

谢谢!

2 个答案:

答案 0 :(得分:12)

您使用的是什么版本的ColdFusion?当我在ColdFusion 9上运行代码时,我得到标题值(使用FireBug看到):

test: 1, 2

至于你是否可以告诉响应标题可能存在的现有值(如果有的话),我还没有找到办法。不过,我会继续寻找。

更新:找到它。

getPageContext().getResponse().containsHeader("test")

例如:

<cfif getPageContext().getResponse().containsHeader("test") eq "NO">
    <cfheader name="test" value="2" />
</cfif>

答案 1 :(得分:3)

无法完成检查标题的确切任务,但我尝试实现标题外观来处理标题发送和跟踪alredy处理项目的历史记录。

它可以像UDF包装一样简单,就像这样:

<!--- this should be somewhere on request start --->
<cfset request.headers = {} />

<!--- wrapper for cfheader --->
<cffunction name="SendHeader" returntype="void" output="false">
    <cfargument name="name" type="string" required="true" hint="Header name">
    <cfargument name="value" type="string" required="true" hint="Header value">
    <cfif NOT StructKeyExists(request.headers, arguments.name)>
        <cfset request.headers[arguments.name] = arguments.value />
        <cfheader name="#arguments.name#" value="#arguments.value#" />
    </cfif>
</cffunction>