mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #2356 from mateusz/ie-download-fix
BUG Fix regression in IE no-cache https file downloads.
This commit is contained in:
commit
716e3b9d47
@ -343,7 +343,23 @@ class HTTP {
|
||||
$responseHeaders['Vary'] = 'Cookie, X-Forwarded-Protocol, User-Agent, Accept';
|
||||
}
|
||||
else {
|
||||
$responseHeaders["Cache-Control"] = "no-cache, max-age=0, must-revalidate, no-transform";
|
||||
// Grab header for checking. Unfortunately HTTPRequest uses a mistyped variant.
|
||||
$contentDisposition = $body->getHeader('Content-disposition');
|
||||
if (!$contentDisposition) $contentDisposition = $body->getHeader('Content-Disposition');
|
||||
|
||||
if(
|
||||
Director::is_https() &&
|
||||
strstr($_SERVER["HTTP_USER_AGENT"], 'MSIE')==true &&
|
||||
strstr($contentDisposition, 'attachment;')==true
|
||||
) {
|
||||
// IE6-IE8 have problems saving files when https and no-cache are used
|
||||
// (http://support.microsoft.com/kb/323308)
|
||||
// Note: this is also fixable by ticking "Do not save encrypted pages to disk" in advanced options.
|
||||
$responseHeaders["Cache-Control"] = "max-age=3, must-revalidate, no-transform";
|
||||
$responseHeaders["Pragma"] = "";
|
||||
} else {
|
||||
$responseHeaders["Cache-Control"] = "no-cache, max-age=0, must-revalidate, no-transform";
|
||||
}
|
||||
}
|
||||
|
||||
if(self::$modification_date && self::$cache_age > 0) {
|
||||
|
@ -391,13 +391,9 @@ class SS_HTTPRequest implements ArrayAccess {
|
||||
}
|
||||
$response = new SS_HTTPResponse($fileData);
|
||||
$response->addHeader("Content-Type", "$mimeType; name=\"" . addslashes($fileName) . "\"");
|
||||
// Note a IE-only fix that inspects this header in HTTP::add_cache_headers().
|
||||
$response->addHeader("Content-disposition", "attachment; filename=" . addslashes($fileName));
|
||||
$response->addHeader("Content-Length", strlen($fileData));
|
||||
$response->addHeader("Pragma", ""); // Necessary because IE has issues sending files over SSL
|
||||
|
||||
if(strstr($_SERVER["HTTP_USER_AGENT"],"MSIE") == true) {
|
||||
$response->addHeader('Cache-Control', 'max-age=3, must-revalidate'); // Workaround for IE6 and 7
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user