Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Third-Party-Inhalte bzw. -Cookies sind im Safari per default deaktiviert.

Diese Einstellung sorgt unter anderem auch dafür, dass iframes, die zur Einbindung der Printlounge in externe Ressourcen (bspw. xt:commerce oder Magento) ggf. aber auch in OPC-Lösungen blockiert werden und zu einer "weißen Seite" führen.

Image Removed

Da diese Einstellung voraussetzt, dass der Benutzer die eingebundene Seite bereits selbst aktiv aufgerufen und besucht hat, damit diese Inhalte geladen werden dürfen, muss diese Seite einfach aufgerufen werden. Hierzu sind folgende Anpassungen erforderlich:

  1. In der Printlounge wurde die Datei /_safarithirdparty.php angelegt, welche ein Cookies setzt und den Besucher anschließend sofort wieder zur angegebenen Redirect-URL weiterleitet (?r=URL)
  2. Auf der Kundenseite (also bspw. im xt:commerce-Template) muss folgender Code auf der Startseite eingefügt werden:
<?php if(!isset($_COOKIE['fixed'])) { ?>
<script>
fixmycookies();
function fixmycookies() {
var is_safari = navigator.userAgent.indexOf('Safari') > -1;
if (is_safari) {
if (!getCookie('fixed')) {
setCookie('fixed', 'fixed', 365);
if (getCookie('fixed')) {

...

Externe Verwendung der Print Lounge

Wird die Print Lounge in einem externen System verwendet (bspw. als Personalisierungsmöglichkeit in eCommerce-Lösungen), kann es aufgrund von Einstellungen im Browser ("Einstellungen » Datenschutz » Nur von Webseiten erlauben, die ich besuche") dazu kommen, dass das eingebundene iFrame vom Browser geblockt wird. Beispielsweise im Safari führt diese Einstellung dazu, dass die eingebettete Print Lounge geblockt wird und der Benutzer nur eine "weiße Seite" sieht.

Dieses Verhalten kann durch die Einbindung des folgenden Scripts umgangen werden:

Panel
titleThird-Party-Authorization via PHP

Dieser Code-Snippet leitet den Benutzer zu der Instanz der Print Lounge und anschließend zurück zur ursprünglichen Anwendung, um die Print Lounge als eine "besuchte Seite" zu hinterlegen:

 

<?php
if (stripos($_SERVER['HTTP_USER_AGENT'], 'Safari') !== false) {
$clientService = $app->make('PS.ClientService');
 
if (isset($_SESSION['tpa_initialization'])) {
$_SESSION['tpa'] = 1;
};
 
if ((!isset($_SESSION['tpa']) && !isset($_SESSION['tpa_initialization']))) {
$_SESSION['tpa_initialization'] = 1;
$hookUrl = 'http://' . $_SERVER['

...

HTTP_

...

}
}
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return '';
}
}
</script>
<?php }; ?>

...

HOST'] . $_SERVER['REQUEST_URI']; 

...

// This is the current url
header('Location: http://printloungeinstanz.print-server.net/thirdpartyauthorization/?r=' . urlencode($hookUrl));
 exit();
} else {
$_SESSION['tpa'] = 1;
};
};
?>

Diese Weiterleitung kann auch per JavaScript erfolgen.

Wichtig: Dieser Fix umgeht die Datenschutzeinstellungen des Benutzers! Es muss hier ggf. ein entsprechender Hinweis auf der Seite ausgegeben werden, dass Inhalte von Drittanbietern bzw. Third-Party-Content zur Personalisierung der Artikel verwendet werden (im Einzelfall mit dem Datenschutzbeauftragen zu klären, ob vorhandene Hinweise ausreichen oder Erweiterungen erforderlich sind).