我怎样才能让setHeader覆盖现有的头文件?
我正在使用ChromeLogger扩展程序的CF接口(无耻插件),该插件使用HTTP标头将数据从服务器端语言记录到Chrome控制台。
在请求过程中,可以多次调用log()
方法。 对于每次通话,我都以ChromeLogger需要正确显示数据的格式写入标题。 在CF10中,这可以正常工作 - 随后每次调用setHeader()
覆盖先前设置的标头名称。 然而,在CF9中,我看到了多个名称相同的标题。
此示例代码演示了这个问题:
<cfscript>
pc = getPageContext().getResponse();
pc.setHeader( "test-header", "value 1" );
pc.setHeader( "test-header", "value 2" );
pc.setHeader( "test-header", "value 3" );
</cfscript>
在CF9中,我看到三个名为“test-header”的头文件,每个头文件都有自己的值。 在CF10中,我看到一个名为“test-header”的头文件,其值为“值3”。 根据这个方法的Java文档,后者是正确的(我的重点):
用给定的名称和值设置响应头。 如果标题已被设置,则新值将覆盖前一个值 。 containsHeader方法可用于在设置其值之前测试头的存在。
使用cfheader
标签有相同的结果,大概是因为它只是包装了setHeader()
方法。
我知道我可以在请求过程中构建头部,然后通过onRequestEnd()
一次调用setHeader()
onRequestEnd()
,但我希望这个组件尽可能自包含 -更少的终端用户必须修改他们的代码来实现它,效果会更好。
CF9中有没有其他方法可以覆盖现有的头文件?
看起来它可能是ColdFusion 9中的一个错误。https://bugbase.adobe.com/index.cfm?event=bug&id=3041696 2010年6月,Adam Cameron为9.0版本输入了这个错误(尽我所能告诉)。 它被列为“延迟”状态和“NotEnoughTime”原因。
链接地址: http://www.djcxy.com/p/12849.html上一篇: How can I get setHeader to overwrite an existing header?