8

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 で既存のヘッダーを上書きする他の方法はありますか?

4

1 に答える 1

4

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

于 2013-04-16T18:37:51.120 に答える