代码
<cfheader name="Test" value="1">
<cfheader name="Test" value="2">
导致标题“Test:2”被发送到浏览器(使用HttpFox看到)。
第二行代码是否有办法确定是否已使用CFHEADER编写了具有相同名称的标头?
谢谢!
答案 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>