2010-06-15 18 views
5

Il codiceI valori CFHEADER possono essere letti da un altro codice?

<cfheader name="Test" value="1"> 
<cfheader name="Test" value="2"> 

risultati nell'intestazione "Test: 2" inviati al browser (come si è visto con HttpFox).

C'è un modo per la seconda riga di codice per determinare se un'intestazione con lo stesso nome è già stata scritta utilizzando CFHEADER?

Grazie!

risposta

12

Quale versione di ColdFusion stai usando? Quando eseguo il codice su ColdFusion 9, ottengo il valore di intestazione (Come si è visto con FireBug):

test: 1, 2 

Per quanto riguarda se o non si può dire che cosa, se del caso, i valori esistenti ci potrebbe essere per l'intestazione di risposta , Non ho ancora trovato un modo. Continuerò a cercare, però.

Aggiornamento: Trovato.

getPageContext().getResponse().containsHeader("test") 

Ad esempio:

<cfif getPageContext().getResponse().containsHeader("test") eq "NO"> 
    <cfheader name="test" value="2" /> 
</cfif> 
+0

Cool. Funziona anche con Railo 3.1, incluso l'output 'test: 1, 2'. – Sergii

+0

Ah, stiamo usando la versione ColdFusion Standard 8,0,1,195765, e LiveHTTPHeaders in Firefox mostra solo "Test: 2". Il tuo codice funziona perfettamente anche su CF8 ... lo userò - grazie! –

3

Impossibile aiutare con il compito esatto di controllare le intestazioni, ma ho provato a implementare la facciata dell'intestazione per gestire le intestazioni che inviano e tracciano la cronologia degli oggetti elaborati.

Può essere semplice come UDF involucro, come questo:

<!--- this should be somewhere on request start ---> 
<cfset request.headers = {} /> 

<!--- wrapper for cfheader ---> 
<cffunction name="SendHeader" returntype="void" output="false"> 
    <cfargument name="name" type="string" required="true" hint="Header name"> 
    <cfargument name="value" type="string" required="true" hint="Header value"> 
    <cfif NOT StructKeyExists(request.headers, arguments.name)> 
     <cfset request.headers[arguments.name] = arguments.value /> 
     <cfheader name="#arguments.name#" value="#arguments.value#" /> 
    </cfif> 
</cffunction> 
Problemi correlati