同主机环境下Drupal嵌入静态网站iframe被拒的技术求助
问题分析与解决方案
为什么SAMEORIGIN不行?
X-Frame-Options: SAMEORIGIN的规则是仅允许当前域名下的页面嵌入该资源。你的Drupal网站和静态网站属于不同源(哪怕部署在同一主机,只要域名、端口、协议有一个不同,就判定为跨源),所以浏览器会拒绝嵌入。
需要修改的安全指令及操作步骤
你需要调整静态网站的跨域嵌入控制规则,允许Drupal网站的域名作为嵌入来源,具体有两种方案:
方案1:使用X-Frame-Options: ALLOW-FROM(兼容旧浏览器)
在静态网站的.htaccess文件中,替换你之前添加的代码为:
<IfModule mod_headers.c> Header set X-Frame-Options "ALLOW-FROM https://你的Drupal网站域名/" </IfModule>
注:部分现代浏览器已逐步淘汰该指令,但对老版本浏览器仍有效。
方案2:使用Content-Security-Policy: frame-ancestors(现代标准方案)
这是当前推荐的跨域嵌入控制方式,优先级高于X-Frame-Options,在.htaccess中添加:
<IfModule mod_headers.c> Header set Content-Security-Policy "frame-ancestors 'self' https://你的Drupal网站域名/;" </IfModule>
'self'表示允许静态网站自身嵌入自己,可根据需求保留或删除- 替换
https://你的Drupal网站域名/为实际的Drupal站点域名
验证修改
修改完成后重启Web服务器(或确保.htaccess规则生效),清除浏览器缓存后重新尝试嵌入iframe,即可正常显示。
内容的提问来源于stack exchange,提问作者hamza
相关产品推荐
相关产品推荐

