"다운로드 링크"를 구현하고 보고서 테이블 옆에 넣으려고했는데 사용자가 CSV 파일을 다운로드하여 Excel과 같은 응용 프로그램에서 열 수 있습니다.IE에서
레코드는 사용자가 작성한 쿼리를 기반으로 동적으로 생성됩니다.
그래서 어딘가에 내 컨트롤러에 같은있다 : 이것은 모두 파이어 폭스 & 크롬에서 작동
response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=xxx.csv'
return response.stream(dynamically_generated_csv, request=request)
하지만, IE에서 실패합니다. 내가 응답 헤더를 인쇄 할 때
, 나는 몇 가지 헤더 web2py에 의해 내 대답에 추가 된 것을 발견 : '만료', '캐시 제어', 등 ...
을 그리고 난 '캐시를 제거 할 때 다음을 수행하여 제어 헤더를 추가하십시오.
del response.headers['Cache-Control']
IE에서 작동합니다.
IE에서 'Cache-Control'이 설정된 값으로 설정된 다운로드 가능한 파일을 처리하는 데 문제가있는 것처럼 보입니다.
자, 내 질문은 :
이유는 암시 적으로, 이러한 응답 헤더를 추가 web2py 무엇입니까? 어쩌면 그것을 없앨 수있는 방법이 없습니까?
이 경우 'Cache-Control'헤더를 삭제하면 부작용이 있습니까?
미리 감사드립니다.
이것은 특정 버전의 IE에서 알려진 결함 : http://support.microsoft.com/kb/323308 –
Django를 사용할 때 응답 헤더는 내가 명시 적으로 설정 한 것입니다. 그러나 web2py의 경우에는 개발자의 지식없이 응답 헤더가 추가되었으므로 프레임 워크의 디자인이 좋지 않을 수도 있으며 사람들이 후드에서 발생하는 상황을 파악하는 데 드는 비용이 듭니다. – satoru
정적 파일을 제공 할 때 web2py는 캐시 헤더를 설정하여 브라우저가 이미 서버에있는 파일을 요청하지 않고 서버에서 변경하지 않았는지 확인합니다. 동적 콘텐츠를 제공 할 때 web2py는 브라우저가 캐시하지 않도록합니다 (이것이 내가 믿는 경우). web2py의 철학은 다른 프레임 워크의 철학과 다릅니다. 가능한 한 많은 것을 해드 리기 위해 howto (이 경우 브라우저 캐시를 관리하는 방법)를 배울 필요가 없습니다. 문제는 IE 버그입니다. 나는 이것을 web2py 메일 링리스트에 올려서 다른 개발자들과 토론 할 것이다. – mdipierro