Drupal 8 adds the response header X-Frame-Options: SAMEORIGIN
to all pages. This prevents that the content is included in iframes on third party sites.
You can check this for example in the google image search that your content does not appear in the preview frame.
This feature was introduced in drupal 8 beta 13.
The change record
Core is now protected against click-jacking by default (X-Frame-Options: SAMEORIGIN)
is not correct in that the priority has to be higher, in fact it has to be lower. The code example changes the request but it has to change the response.
To provide a solution to the question here is the complete code including the yaml file to put this in the service container:
mymodule/src/EventSubscriber/RemoveXFrameOptionsSubscriber.php
:
<?php
namespace Drupal\mymodule\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class RemoveXFrameOptionsSubscriber implements EventSubscriberInterface {
public function RemoveXFrameOptions(FilterResponseEvent $event) {
$response = $event->getResponse();
$response->headers->remove('X-Frame-Options');
}
public static function getSubscribedEvents() {
$events[KernelEvents::RESPONSE][] = array('RemoveXFrameOptions', -10);
return $events;
}
}
mymodule/mymodule.services.yml
:
services:
remove_x_frame_options_subscriber:
class: Drupal\mymodule\EventSubscriber\RemoveXFrameOptionsSubscriber
tags:
- { name: event_subscriber }