2013-04-16 6 views
7

Sto lavorando a un'interfaccia CF sull'estensione ChromeLogger (shameless plug), che utilizza le intestazioni HTTP per registrare i dati da una lingua lato server alla console di Chrome.Come posso ottenere setHeader per sovrascrivere un'intestazione esistente?

Nel corso di una richiesta, il metodo log() può essere chiamato più volte. Per ogni chiamata, sto scrivendo l'intestazione nel formato che ChromeLogger deve visualizzare correttamente i dati. In CF10, questo funziona correttamente - ogni chiamata successiva a setHeader() sovrascrive l'intestazione precedentemente impostata con lo stesso nome. In CF9, tuttavia, vedo intestazioni multiple con lo stesso nome.

Questo codice di esempio illustra il problema:

<cfscript> 
pc = getPageContext().getResponse(); 
pc.setHeader("test-header", "value 1"); 
pc.setHeader("test-header", "value 2"); 
pc.setHeader("test-header", "value 3"); 
</cfscript> 

In CF9, vedo tre intestazioni denominato "Test-header", ognuno con il proprio valore. In CF10, vedo un'intestazione denominata "test-header", con un valore di "valore 3". Secondo lo Java docs per questo metodo, il secondo è corretto (sottolineatura mia):

Imposta un'intestazione di risposta con il nome e il valore specificati. Se l'intestazione era già stata impostata, il nuovo valore sovrascrive quello precedente. Il metodo containsHeader può essere utilizzato per verificare la presenza di un'intestazione prima di impostarne il valore.

Utilizzando il tag cfheader ha gli stessi risultati, presumibilmente perché appena avvolge il metodo setHeader().

Sono consapevole che posso costruire l'intestazione nel corso della richiesta e quindi chiamare setHeader() una volta alla fine tramite onRequestEnd(), ma mi piacerebbe che questo componente fosse il più autonomo possibile - il meno l'utente finale deve modificare il codice per implementarlo, meglio è.

C'è qualche altro modo in CF9 per sovrascrivere un'intestazione esistente?

risposta

3

Sembra che potrebbe essere un bug in ColdFusion 9. https://bugbase.adobe.com/index.cfm?event=bug&id=3041696 Questo errore è stato inserito da Adam Cameron nel giugno 2010 per la versione 9.0 (per quanto posso dire). È elencato con lo stato "Rimandato" e la ragione di "NotEnoughTime".

+1

Grazie, Miguel - è deludente. Ho mandato ad Adam un messaggio su Twitter per vedere se ha mai trovato una soluzione alternativa. Se non lo facesse, andrò avanti e accetterò questo in luogo di una vera soluzione. –

+0

@SeanWalsh - Suppongo che questo significhi che Adam non ha mai trovato una soluzione alternativa? –

+0

Purtroppo no, guarda i suoi due tweet qui: https://twitter.com/daccf/status/324233254335033344 https://twitter.com/daccf/status/324233463597244416 –