我正在开发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”的标头,其值为“value 3”。根据此方法的Java 文档,后者是正确的(强调我的):
设置具有给定名称和值的响应标头。如果已经设置了标头,则新值将覆盖前一个值。containsHeader 方法可用于在设置标头值之前测试标头是否存在。
使用cfheader
标签有相同的结果,大概是因为它只是包装了setHeader()
方法。
我知道我可以在请求过程中建立标头,然后setHeader()
在最后通过调用一次onRequestEnd()
,但我希望这个组件尽可能独立 - 最终用户需要的越少修改他们的代码来实现它,更好。
CF9 中还有其他方法可以覆盖现有的标头吗?