2013-04-16 14 views
7

ChromeLoggerの拡張機能(shameless plug)のCFインターフェイスで作業しています。これは、HTTPヘッダーを使用してサーバー側の言語からChromeコンソールにデータをログに記録します。setHeaderを使用して既存のヘッダーを上書きするにはどうすればよいですか?

リクエストの途中で、log()メソッドを複数回呼び出すことができます。呼び出しごとに、ChromeLoggerでデータを正しく表示するための形式でヘッダーを書いています。 CF10では、これは正常に動作します。setHeader()へのその後の呼び出しでは、以前に設定されたヘッダーが同じ名前で上書きされます。しかし、CF9では、同じ名前の複数のヘッダーが表示されています。

このサンプルコードは、問題を示しています

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

、私は、という3つのヘッダの「テスト・ヘッダ、」自分の価値を持つそれぞれを参照してください。 CF10では、「値3」の値を持つ「test-header」という名前のヘッダーが1つ表示されます。このメソッドのJava docsによれば、後者は正しいです(強調鉱山)。

応答ヘッダーを指定された名前と値で設定します。 ヘッダーが既に設定されている場合、新しい値は前の値を上書きします。 containsHeaderメソッドは、値を設定する前にヘッダーの有無をテストするために使用できます。 cfheaderタグを使用して

はそれだけでsetHeader()メソッドをラップし、おそらくので、同じ結果を持っています。

私はリクエストの途中でヘッダーを作成してonRequestEnd()経由でsetHeader()を最後に呼び出すことができますが、このコンポーネントはできるだけ自己完結型にしたいと思います。エンドユーザーがコードを修正して実装する必要性は少なくなります。

CF9に既存のヘッダを上書きする方法はありますか?

答えて

3

ColdFusion 9のバグである可能性があります。https://bugbase.adobe.com/index.cfm?event=bug&id=3041696このバグは、2010年6月にリリースされたバージョン9.0のAdam Cameronによって入力されました。 「延期」のステータスと「NotEnoughTime」の理由でリストされます。

+1

ありがとう、ミゲル - それは残念です。私はAdamにTwitterでメッセージを送り、回避策が見つかったかどうかを確認しました。彼がしなければ、本当の解決策があるのではなく、これを受け入れるだろう。 –

+0

@SeanWalsh - これは、Adamが回避策を見つけられなかったことを意味します。 –

+0

残念なことに、彼の2つのつぶやきはここにあります:https://twitter.com/daccf/status/324233254335033344 https://twitter.com/daccf/status/324233463597244416 –

関連する問題