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に既存のヘッダを上書きする方法はありますか?
ありがとう、ミゲル - それは残念です。私はAdamにTwitterでメッセージを送り、回避策が見つかったかどうかを確認しました。彼がしなければ、本当の解決策があるのではなく、これを受け入れるだろう。 –
@SeanWalsh - これは、Adamが回避策を見つけられなかったことを意味します。 –
残念なことに、彼の2つのつぶやきはここにあります:https://twitter.com/daccf/status/324233254335033344 https://twitter.com/daccf/status/324233463597244416 –