Drupal 8将响应标头添加X-Frame-Options: SAMEORIGIN
到所有页面。这样可以防止内容包含在第三方网站的iframe中。
例如,您可以在Google图片搜索中检查您的内容是否未出现在预览框中。
此功能是在drupal 8 beta 13中引入的。
变更记录
现在,默认情况下,Core已受到保护,免遭点击劫持(X-Frame-Options:SAMEORIGIN)
是不正确的,因为优先级必须更高,实际上必须更低。该代码示例更改了请求,但必须更改响应。
为了解决这个问题,这里是完整的代码,包括将其放入服务容器的yaml文件:
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 }