For whatever reason Internet Explorer (tested 9 and 10) append the original uncompressed content length to the end of If-Modified-Since and so it fails to parse in ConditionalGetMiddleware.
This only seems to happen with runserver so it's probably a header issue.
I'm going to guess that it's due to runserver responding with HTTP 1.0 which triggers the behaviour in Internet Explorer. I don't see why the other headers added by Apache would make a difference.
An incompatibility between runserver and IE probably is going to be a very low priority - as a development server can't be expected to chase browser quirks.
Yes, the anon comment is me.
This bug has nothing to do with the middleware adding headers but is instead about how it parses headers sent by the browser. The mystery is what does runserver do that causes IE to send an invalid header while IE responds to Apache + mod_wsgi with a valid header.
This bug is minor but really annoying if you're actually developing views that are meant to be cached. Since Webkit, Firefox and IE all have slightly different caching behaviour you do need to test thoroughly in each browser and this bug makes that harder.
Can you perform the tests and provide the information that comment suggests?