8

我正在开发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 中还有其他方法可以覆盖现有的标头吗?

4

1 回答 1

4

看起来它可能是 ColdFusion 9 中的一个错误。 https://bugbase.adobe.com/index.cfm?event=bug&id=3041696 这个错误是 Adam Cameron 在 2010 年 6 月为 9.0 版输入的(据我所知)告诉)。它的状态为“延迟”,原因为“NotEnoughTime”。

于 2013-04-16T18:37:51.120 回答