To work around this behavior you can use the buffering capabilities of the Response object. In doing this you can output HTML code into the buffer until you reach a point where you use the Redirect method. If at this point you need to redirect to another page, you clear the buffer and then issue the Response.Redirect.
Example error
When trying to use the Response.Redirect method in a server-side script, the following error can occur when the page is accessed:
Response object error 'ASP 0156 : 80004005
Header Error
/<page.asp>, line 9
The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content.
Header Error
/<page.asp>, line 9
The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content.
Example ASP
The following example Active Server Pages (ASP) code demonstrates this concept:
<%
' Begin buffering the HTML
' Note this MUST happen before the initial <HTML> tag.
Response.Buffer = True
%>
<HTML>
<BODY>
HTML code before potential redirect.<P>
<%
' Change the following line as appropriate for your script
If 1 = 1 Then
Response.Clear
Response.Redirect "filename.asp"
End If
%>
Code to be added
Use the following additional HTML code after the redirect:
<%
' The following causes the HTML to actually be sent to the client.
' Up to this point, no HTML has actually been downloaded to the client
' browser.
Response.End
%>
</BODY>
</HTML>
Note Setting the Response.Buffer = True is not necessary in Windows 2000 because it is True by default.