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?
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. –
@SeanWalsh - Suppongo che questo significhi che Adam non ha mai trovato una soluzione alternativa? –
Purtroppo no, guarda i suoi due tweet qui: https://twitter.com/daccf/status/324233254335033344 https://twitter.com/daccf/status/324233463597244416 –