OK, further information on this. I believe that the issue may be with the content type header. The backend server is returning a two content type headers
Content-Type: text/html
Content-type: text/html;Charset=ISO-8859-1
However, when the result gets translated by IIS, the resulting single header is
Content-Type: text/html,text/html;Charset=ISO-8859-1
I dummied up a socket application to return arbitrary headers and HTML, and removing the extra text/html seems to correct the problem, although I cannot guarantee that it works for more complex HTML than the very simple stuff that I was returning. Full responses below.
Original response (backend server) displays correctly in IE
HTTP/1.0 200 OK
Server: 4D_WebStar_D/6.74
Cache-Control: no-cache
Pragma: no-cache
Expires: Tue, 05 May 2009 17:56:52 GMT
Content-Type: text/html
Date: Tue, 05 May 2009 17:56:52 GMT
Last-Modified: Tue, 05 May 2009 17:56:52 GMT
Expires: Wed, 06 May 2009 17:56:52 GMT
Content-type: text/html;Charset=ISO-8859-1
Content-Length: 41
<html>
<body>
hi
</body>
</html>
Response after begin proxied by ARR does not display correctly in IE
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 41
Content-Type: text/html,text/html;Charset=ISO-8859-1
Expires: Tue, 05 May 2009 17:54:29 GMT,Wed, 06 May 2009 17:54:29 GMT
Last-Modified: Tue, 05 May 2009 17:54:29 GMT
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Tue, 05 May 2009 17:54:17 GMT
<html>
<body>
hi
</body>
</html>
My hacked up response displays correctly in IE
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 41
Content-Type: text/html;Charset=ISO-8859-1
Expires: Tue, 05 May 2009 17:54:29 GMT,Wed, 06 May 2009 17:54:29 GMT
Last-Modified: Tue, 05 May 2009 17:54:29 GMT
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Tue, 05 May 2009 17:54:17 GMT
<html>
<body>
hi
</body>
</html>
All that said, does anyone know how I could
-
Get ARR to aggregate instead of append duplicate headers (similar behavior with content expiration) or
-
Get IIS7 to treat the type text/html,text/html;Charset=ISO-8859-1as if it were just one or the other or
-
Get IE to display the content in spite of the somewhat odd headers
I'm assuming that since that content type isn't one of the "normal" types that IE thinks it has to download the file, but cannot store it, since the content cannot be cached. I'm just not sure what the "right" workaround is. I definitely don't want to turn on caching, since this is dynamic content being served with a .html extension.