[gelöst] Merkwürdiger Effekt mit IE unter HTTPS
am 18.03.2010 - 14:53 Uhr in
Hallo Alle
ich möchte eine Drupal-Seite komplett unter SSL laufen lassen. Hierzu habe ich in der .htaccess
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]hinzugefügt.
Funktioniert auch gut, nur im IE können dann Dateianhänge nicht mehr geöffnet werden, wenn diese "Privat" übermittelt werden.
FF, Safari und Chrome machen keine Probleme.
Kennt jemand diesen Effekt?
Hat jemand eine Ahnung wodurch es zu diesem Fehler kommt?
Weiß jemand wie man das abschalten kann?
Gruß
UwBach
- Anmelden oder Registrieren um Kommentare zu schreiben

Falscher Contenttype
am 19.03.2010 - 09:04 Uhr
Einige Punkte konnte ich jetzt klären.
Der Fehler tritt dadurch auf das zuerst ein falscher Content-Type gesendet wird; "Content-Type: text/html; charset=utf-8" statt "Content-Type: application/pdf" (in common.inc :: drupal_set_header($header = NULL)). In der Funktion "file_transfer($source, $headers)" in file.inc wird der richtige Content-Type übergeben, d.h. die Funktion drupal_set_header() wird vorher von einer anderen Funktion aufgerufen, welche ist mir noch nicht bekannt.
Scheint also ein Bug zu sein, mal schauen ob ich den finde ...
Gruß
UwBach
Lösung gefunden
am 01.04.2010 - 10:51 Uhr
Der Fehler trat nicht durch das senden eines falschen Content-Types auf sondern durch eine Eigenart des IE der unter SSL nicht cachen kann (http://support.microsoft.com/kb/323308/en-us). Leider konnte ich den Fehler nur beheben indem die Anpassung direkt in das Modul "include/file.inc" geschrieben wurde (unschön):
function file_transfer($source, $headers) {
global $base_url; //********* added ************
if (ob_get_level()) {
ob_end_clean();
}
foreach ($headers as $header) {
// To prevent HTTP header injection, we delete new lines that are
// not followed by a space or a tab.
// See http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
$header = preg_replace('/\r?\n(?!\t| )/', '', $header);
drupal_set_header($header);
}
//*********** added *******************
if (preg_match('|^https://|', $base_url)) {
drupal_set_header('Cache-Control: private');
drupal_set_header('Pragma: private');
}
//*********** /added *******************
$source = file_create_path($source);
// Transfer file in 1024 byte chunks to save memory usage.
if ($fd = fopen($source, 'rb')) {
while (!feof($fd)) {
print fread($fd, 1024);
}
fclose($fd);
}
else {
drupal_not_found();
}
exit();
}
MfG
UwBach