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 메서드가 필요한 기능을 제공하면 이 메서드 대신 그 메서드를 사용하는 것이 좋습니다. 예를 들어, 클라이언트 구성에 의존하지 않고 후속 요청에 대해 사용자 지정 값을 웹 응용 프로그램으로 보내거나 반환하려면 Response.Cookies 및 Request.Cookies를 사용합니다. 또는 응답에 대한 캐시 컨트롤을 설정하려면 Response.CacheControl을 사용합니다.
HTTP 프로토콜에서는 모든 헤더를 컨텐트 이전에 보내야 하므로 보통 ASP 스크립트가 출력을 생성하기 전에 나가는 모든 헤더를 수정해야 합니다. 따라서 IIS 4.0에서는 클라이언트에 출력(HTML 코드나 Write 메서드에 의해 작성된 출력과 같은)을 보내기 전에 스크립트에서 ADDHeader를 호출해야 합니다. IIS 버전 5.0 이상에서 응답 버퍼링은 기본값으로 설정되어 있습니다. 따라서 Flush를 호출하기 전에 스크립트의 어디서든 AddHeader 메서드를 호출할 수 있습니다. ASP 스크립트에 Response.Buffer를 호출하거나 AspBufferingOn 메타베이스 속성을 설정하여 응답 버퍼링을 사용하거나 해제할 수 있습니다.
다음 .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" %>
위 스크립트는 클라이언트 브라우저에서 사용할 인증 형식만 알려주며 응용 프로그램에 기본 인증을 사용할 수 있도록 웹 서버를 지정하지는 않습니다.