我正在致力於使用ChromeLogger擴展名(shameless plug)的CF接口,該接口使用HTTP標頭將數據從服務器端語言記錄到Chrome控制檯。我怎樣才能讓setHeader覆蓋現有的頭文件?
在請求過程中,可以多次調用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,我看到了三個頭名爲「測試頭」,每個都有自己的價值。在CF10中,我看到一個名爲「test-header」的頭文件,其值爲「值3」。根據此方法的Java docs,後者是正確的(重點是我的):
設置具有給定名稱和值的響應頭。 如果標題已被設置,則新值將覆蓋前一個。 containsHeader方法可用於在設置其值之前測試頭的存在。
使用cfheader
標記具有相同的結果,大概是因爲它只是包裝了setHeader()
方法。
我知道我可以在請求過程中建立標題,然後通過onRequestEnd()
在末尾調用setHeader()
一次,但我希望此組件儘可能獨立 - 更少的終端用戶必須修改他們的代碼來實現它,效果會更好。
CF9中是否有其他方式來覆蓋現有的頭文件?
謝謝,米格爾 - 這是令人失望的。我在Twitter上向亞當發送了一條消息,看看他是否找到了解決方法。如果他不這樣做,我會繼續接受,代替有真正的解決辦法。 –
@SeanWalsh - 我認爲這意味着Adam從未找到解決方法? –
不幸的是,沒有 - 在這裏看到他的兩條推文:https://twitter.com/daccf/status/324233254335033344 https://twitter.com/daccf/status/324233463597244416 –