2010-06-15 60 views
5

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

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

结果在标题“测试:2”被发送到浏览器(如使用的是HttpFox看到的)。

有没有办法让第二行代码确定是否已经使用CFHEADER编写了同名的头文件?

谢谢!

回答

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> 
+0

冷却。也适用于Railo 3.1,包括'test:1,2'输出。 – Sergii 2010-06-15 13:40:24

+0

啊,我们使用的是ColdFusion Standard 8,0,1,195765版本,Firefox中的LiveHTTPHeaders只显示“Test:2”。你的代码也可以在CF8上完美工作......将使用它 - 谢谢! – 2010-06-17 12:24:08

3

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

它可以作为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> 
相关问题