2,8K
Wer versucht Nextcloud per iFrame einzubinden wird herausfinden, dass dies so einfach nicht möglich ist. Wie es doch funktioniert, zeige ich euch hier.
Ihr müsst lediglich eine Datei öffnen und dort einen Eintrag abändern. Diese Datei öffnen ihr mit:
nano /var/www/html/nextcloud/lib/private/legacy/response.php
Den Pfad zur Datei müsst ihr natürlich entsprechend anpassen.
Dort geht ihr in die Zeile 262 und kommentiert folgende Zeile aus:
header('X-Frame-Options: SAMEORIGIN'); // Disallow iFraming from other domains
Das Ergebnis sollte so aussehen:
public static function addSecurityHeaders() { /** * FIXME: Content Security Policy for legacy ownCloud components. This * can be removed once \OCP\AppFramework\Http\Response from the AppFramework * is used everywhere. * @see \OCP\AppFramework\Http\Response::getHeaders */ $policy = 'default-src \'self\'; ' . 'script-src \'self\' \'unsafe-eval\' \'nonce-'.\OC::$server->getContentSecurityPolicyNonceManager()->getNonce().'\'; ' . 'style-src \'self\' \'unsafe-inline\'; ' . 'frame-src *; ' . 'img-src * data: blob:; ' . 'font-src \'self\' data:; ' . 'media-src *; ' . 'connect-src *; ' . 'object-src \'none\'; ' . 'base-uri \'self\'; '; header('Content-Security-Policy:' . $policy); #header('X-Frame-Options: SAMEORIGIN'); // Disallow iFraming from other domains
Nun startet ihr noch euren Webserver neu. Bei nginx funktioniert das folgendermaßen:
service nginx restart
Die Datei “response.php” heißt mittlerweile “OC_Response.php”.
Hallo Christian,
ich habe die Zeile mit # auskommentiert und den Webserver (Apache) bereits mehrmals neu gestartet. Leider funktioniert das Anzeigen einer Ordnerfreigabe in einem iFrame dennoch nicht.
Hast Du vielleicht noch eine Idee dazu?