2010-06-15 11 views
5

El código¿Los valores de CFHEADER pueden leer otros códigos?

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

resultados en la cabecera "de la prueba: 2" que se envían al navegador (como se ve usando HttpFox).

¿Hay alguna manera de que la segunda línea de código determine si un encabezado con el mismo nombre ya se ha escrito utilizando CFHEADER?

Gracias!

Respuesta

12

¿Qué versión de ColdFusion está usando? Cuando ejecuto el código de ColdFusion 9, consigo el valor de la cabecera (Como se ve usando FireBug):

test: 1, 2 

En cuanto a si o no se puede decir lo que, en su caso, los valores existentes no sea así desde la cabecera de la respuesta , Todavía no he encontrado una manera. Sin embargo, seguiré buscando.

Actualización: Lo encontró.

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

Por ejemplo:

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

fresca. También funciona con Railo 3.1, incluida la salida 'test: 1, 2'. – Sergii

+0

Ah, estamos usando la versión ColdFusion Standard 8,0,1,195765, y LiveHTTPHeaders en Firefox muestra solo "Test: 2". Tu código también funciona perfectamente en CF8 ... lo usaré, ¡gracias! –

3

No puedo ayudar con la tarea exacta de verificar los encabezados, pero he intentado implementar la fachada del encabezado para manejar los encabezados que envían y rastrean el historial de elementos procesados.

Puede ser tan simple como UDF envoltorio, como éste:

<!--- 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> 
Cuestiones relacionadas