<iframe> 不显示来自同一站点的页面,而是显示来自另一个站点的页面

<iframe> not displaying pages from the same site, but displaying pages from another site

我正在 站点 A 的页面上部署一个 <iframe> 作为显示 其他地方复杂页面片段的快速简单的方法]站点 A:

<iframe src="http://site-a.com/complex-page/"></iframe>

站点 A 上的 <iframe> 中没有显示任何内容。

疑难解答:

  1. 我在浏览器中查看了http://site-a.com/complex-page/,页面显示正常。
  2. 我使用 http://site-b.com/complex-page/ 作为源测试了 <iframe><iframe> 在(外部) 站点 B 上显示了外部页面, 正如预期的那样。
  3. 我使用 http://site-a.com/complex-page-2/ 作为源测试了 <iframe><iframe>.
  4. 中再一次没有显示任何内容

所以...这显然与 站点 A 有关,如果 站点 A 上的 <iframe>站点 A 上的几个页面中没有显示任何页面,但它显示 站点 B[=68= 上的多个页面 中的任何一个].

这显然不是 同源 问题 - 站点 A 站点 A.

同源

那么是什么阻止了 站点 A 上的外部页面显示?

另外:

如果我 Right Click > This Frame > View Frame Source 那么我 可以 查看 HTML 由 <iframe>...或我添加到文档中的样式,没有任何显示。

这表明 <iframe> 正在成功访问该页面,但随后(由于某种原因)未能显示它。


支持信息: 该站点是使用 PHP 服务器端和 HTML5、CSS3 构建的和 Javascript 客户端。

一旦我明白我面临的是一个 X-Frame-Options 问题,这个问题就更容易解决了。

显然 X-Frame-Options 可以有三个值:

  • DENY
  • SAMEORIGIN
  • ALLOW-FROM [URI]

X-Frame-Options 可以使用以上三个值中的任何一个在 .htaccess 文件中设置。

在这种情况下,我需要将 以下行 添加到我的 .htaccess 文件中:

# HEADERS
<ifModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
</ifModule>

感谢此页面:

[Iframe] X-Frame-Options : 网站不允许框架

http://techdc.blogspot.co.uk/2015/04/iframe-x-frame-options-website-does-not.html