Могут ли значения CFHEADER быть прочитаны другим кодом? - PullRequest
5 голосов
/ 15 июня 2010

Код

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

приводит к отправке заголовка "Test: 2" в браузер (как видно с использованием HttpFox).

Есть ли способ для второй строкикод, чтобы определить, был ли заголовок с тем же именем уже написан с использованием CFHEADER?

Спасибо!

Ответы [ 2 ]

12 голосов
/ 15 июня 2010

Какую версию ColdFusion вы используете?Когда я запускаю ваш код в ColdFusion 9, я получаю значение заголовка (как видно из FireBug ):

test: 1, 2

Что касается того, можете ли вы сказать, что, если таковые имеются, существуетЗначения могут быть для заголовка ответа, я еще не нашел способ.Но я продолжу искать.

Обновление: Нашел.

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

Например:

<cfif getPageContext().getResponse().containsHeader("test") eq "NO">
    <cfheader name="test" value="2" />
</cfif>
3 голосов
/ 15 июня 2010

Не могу помочь с точной задачей проверки заголовков, но я попытался реализовать фасад заголовка для обработки заголовков, отправляющих и отслеживающих историю уже обработанных элементов.

Это может быть так же просто, как UDF-оболочка, например:

<!--- 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>
...