AddHeader メソッドは、クライアントへ送信する応答に新しい HTML ヘッダーと値を追加します。同じ名前の既存のヘッダーは置き換えません。いったん追加されたヘッダーは削除できません。
Response.AddHeader HeaderName, HeaderValue
以降の要求で応答ヘッダーをサーバーに返信するようにクライアントが構成されている場合、Request.ServerVariables を使用してカスタム ヘッダー値を取得できます。カスタム ヘッダー名には、"HTTP_" が先頭に付加されます。たとえば、次のコードでヘッダーを追加したとします。
<% Response.AddHeader "CustomHeader", "CustomValue" %>
次のコードにより、特定のクライアントが次回の要求でサーバーにヘッダーを返信すると、そのヘッダーを取得できます。
<% ReturnedValue = Request.ServerVariables("HTTP_CustomHeader") %>
名前があいまいになるのを避けるために、HeaderName にはアンダスコア (_) 文字を含めないでください。ServerVariables コレクションは、ヘッダー名の中のアンダスコアをダッシュ記号として解釈します。たとえば、次のスクリプトでは、サーバーは MY-HEADER という名前のヘッダーを探します。
<% Request.ServerVariables("HTTP_MY_HEADER") %>
Response オブジェクトの別のメソッドで同じ機能が実現できる場合は、そのメソッドを使用するようにしてください。たとえば、カスタム値を送信し、クライアント側の構成に依存することなく以降の要求で Web アプリケーションにその値を返信させるには、Response.Cookies および Request.Cookies を使用できます。あるいは、Response.CacheControl を使用して、応答にキャッシュ制御を設定することもできます。
HTTP プロトコルではコンテンツの前にヘッダーをすべて送信する必要があるため、ASP スクリプトが出力を生成する前に、送信されるすべてのヘッダーを変更する必要があります。IIS 4.0 の場合は、出力 (HTML コードや Write メソッドによって生成される出力) をクライアントに送信する前に、スクリプトで AddHeader を呼び出す必要があります。IIS 5.0 以降では、応答のバッファ処理が既定でオンになっています。このため、AddHeader メソッドは、Flush を呼び出す前であれば、スクリプトの任意の場所で呼び出すことができます。応答のバッファ処理を有効または無効にするには、AspBufferingOn メタベース プロパティを設定するか、ASP スクリプトで Response.Buffer を呼び出します。
以上のスクリプトの例を次の .asp ファイルに示します。
<HTML>
Here's some text on your Web page.
' This header tells proxy servers using HTTP/1.0 not to cache this request.
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Flush %>
<% Response.Write("Pragma is set to no-cache") %>
</HTML>
この例では、ページは既定でバッファに格納されているため、ASP ページ上のスクリプトがすべて処理されるか、または Flush メソッドが呼び出されるまで、サーバーはクライアントに出力を送信しません。上の例で AddHeader を Flush の後で呼び出した場合は、ランタイム エラーが発生します。
AddHeader を使用すると、WWW-Authenticate ヘッダーなどで、同じヘッダーの複数のコピーを値を変えて送信することができます。次の例は、AddHeader メソッドを使用して、クライアントが基本認証を使用するように要求します。
<% Response.Addheader "WWW-Authenticate", "BASIC" %>
上のスクリプトは、使用する認証の種類をクライアント ブラウザに通知するだけです。アプリケーションで基本認証を有効にすることを Web サーバーに通知するものではありません。
Response オブジェクト