最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Drupal8 响应订阅器之–iframe限制解除

XAMPP下载 中文小张 828浏览 0评论

众所周知,将其他网站页面嵌入到自己网站的方式为:iframe.

有时候我们希望禁止他人内嵌我们的网站内容,其方式如下:

设置X-Frame-Options 响应头,它有三个值

DENY,表示该页面任何情况不允许在 frame 中展示.

SAMEORIGIN,表示该页面可以在相同域名页面的 frame 中展示。

ALLOW-FROM uri,表示该页面可以在指定来源的 frame 中展示。

不同服务器配置方法:

配置 Apache 在所有页面上发送 X-Frame-Options 响应头, ‘site’ 配置中添加此行 Header always append X-Frame-Options SAMEORIGIN

配置 nginx 发送 X-Frame-Options 响应头, ‘http’, ‘server’ 或者 ‘location’ 的配置中添加:add_header X-Frame-Options SAMEORIGIN

配置 IIS 发送 X-Frame-Options 响应头,Web.config 文件中添加

回到我们的Drupal站点

Drupal8 中默认的设置了其值为 SAMEORIGIN 用于保护站点信息,

FinishResponsesubscriber :: onRespond 中,你可以找到这样一句,

$response->headers->set(‘X-Frame-Options’, ‘SAMEORIGIN’, FALSE).

 

所以Drupal8的站点中默认是禁止跨域嵌入的。

但是有时候我们又需要为特定的站点,比如合作伙伴开设iframe嵌入,又如何取消限制呢

核心在于此,我们可以去除X-Frame-Options的响应头,

$response->header->remove(‘X-Frame-Options’)

但是这样也不好,因为任何人都解除禁止了.所以推荐这样,

$response->headers->set(‘X-Frame-Options’, ‘ALLOW-FROM “allowsiteuri”‘)

解释:FinishResponsesubscriber 为响应订阅者处理完成的响应服务

我们通过新模块的方式具体做一下(请注意这里包含了模块的创建和服务的注册过程

一,创建aaron_iframed.info.yml 文件注册模块信息

二,创建aaron_iframed.services.yml 文件注册一个服务

三,创建ChangeXFrameOptionsSubscriber.php文件实现

以上,便实现了一个包含小服务的一个小模块,并完成了X-Frame-Options改变.

转载请注明:XAMPP中文组官网 » Drupal8 响应订阅器之–iframe限制解除

您必须 登录 才能发表评论!