def fix_IE_for_attach(request, response):
 useragent = request.META.get('HTTP_USER_AGENT', '').upper()
 if (('MSIE' not in useragent) and ('CHROMEFRAME' not in useragent)):
  return response
 offending_headers = ('no-cache', 'no-store')
 if response.has_header('Content-Disposition'):
  try:
   del response['Pragma']
  except KeyError:
   pass
  if response.has_header('Cache-Control'):
   cache_control_values = [value.strip() for value in response['Cache-Control'].split(',') if (value.strip().lower() not in offending_headers)]
   if (not len(cache_control_values)):
    del response['Cache-Control']
   else:
    response['Cache-Control'] = ', '.join(cache_control_values)
 return response

def fix_IE_for_attach ( request , response ) : useragent = request . META . get ( 'HTTP_USER_AGENT' , '' ) . upper ( ) if ( ( 'MSIE' not in useragent ) and ( 'CHROMEFRAME' not in useragent ) ) : return response offending_headers = ( 'no-cache' , 'no-store' ) if response . has_header ( 'Content-Disposition' ) : try : del response [ 'Pragma' ] except KeyError : pass if response . has_header ( 'Cache-Control' ) : cache_control_values = [ value . strip ( ) for value in response [ 'Cache-Control' ] . split ( ',' ) if ( value . strip ( ) . lower ( ) not in offending_headers ) ] if ( not len ( cache_control_values ) ) : del response [ 'Cache-Control' ] else : response [ 'Cache-Control' ] = ', ' . join ( cache_control_values ) return response
this function will prevent django from serving a content-disposition header while expecting the browser to cache it .