HTTPヘッダーを使用してサーバー側の言語からChromeコンソールにデータを記録するChromeLogger拡張機能(恥知らずのプラグ)へのCFインターフェースに取り組んでいます。
リクエストの過程で、log()
メソッドを複数回呼び出すことができます。呼び出しごとに、ChromeLogger がデータを正しく表示するために必要な形式でヘッダーを書き込んでいます。CF10 では、これは正常に機能します。後続の呼び出しごとにsetHeader()
、以前に設定されたヘッダーが同じ名前で上書きされます。ただし、CF9 では、同じ名前の複数のヘッダーが表示されます。
このサンプル コードは、問題を示しています。
<cfscript>
pc = getPageContext().getResponse();
pc.setHeader( "test-header", "value 1" );
pc.setHeader( "test-header", "value 2" );
pc.setHeader( "test-header", "value 3" );
</cfscript>
CF9 では、「test-header」という名前の 3 つのヘッダーがあり、それぞれに独自の値があります。CF10 では、「値 3」という値を持つ「test-header」という名前のヘッダーが 1 つあります。このメソッドのJavaドキュメントによると、後者は正しいです(私のものを強調してください):
指定された名前と値で応答ヘッダーを設定します。ヘッダーがすでに設定されている場合は、新しい値で以前の値が上書きされます。containsHeader メソッドを使用して、値を設定する前にヘッダーの存在をテストできます。
おそらくメソッドcfheader
をラップするだけなので、タグを使用しても同じ結果になります。setHeader()
リクエストの過程でヘッダーを作成し、setHeader()
最後onRequestEnd()
に .それを実装するためにコードを変更してください。
CF9 で既存のヘッダーを上書きする他の方法はありますか?