【发布时间】:2018-01-23 23:52:03
【问题描述】:
我正在尝试在我的网站上使用一个简单的 iframe。但它没有出现。请看截图。这是我的代码:
<iframe src="https://www.w3schools.com"></iframe>
【问题讨论】:
-
@Lee 那里的答案在这里不适用,正在通过 https 访问 w3schools.com。
我正在尝试在我的网站上使用一个简单的 iframe。但它没有出现。请看截图。这是我的代码:
<iframe src="https://www.w3schools.com"></iframe>
【问题讨论】:
您的代码是正确的,问题在于 w3schools.com。打开开发者控制台会发现:
Refused to display 'https://www.w3schools.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
这意味着 w3schools.com 只能在“来源”(您的框架所在的网站)来自 w3schools.com 的框架中工作。否则,你只会得到一个空白帧。
【讨论】:
<iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ"></iframe>
来自 W3Schools 的页面不会显示在来自不同服务器的 iframe 元素中,因为 W3Schools 网站实施了 iframe 阻止策略。为此,它使用 X-Frame-Options。 (另见how to block website from loading in iframe?。)
您可以通过检查网站的 HTTP 标头来检查网站是否实施了此政策。例如,在 Firefox 中,按 F12 打开检查工具,然后转到 Network,选择通过 HTTP 发送的对象之一并查看标头(或过滤标头,例如“x 帧”)。下面是 W3Schools 的样子:
注意屏幕截图右下方的 x-frame-options: SAMEORIGIN。在服务器端设置x-frame-options: SAMEORIGIN(或在某些其他站点上x-frame-options: DENY)后,您将无法在iframe 或frame 内从该站点加载页面。
有关更多背景信息,请参阅X-Frame-Options – How to Combat Clickjacking,它还解释了可在x-frame-options 标头中使用的其他值。
如果您想使用不阻止 iframe 加载的服务器上的网页进行测试,请尝试例如 https://wiki.archlinux.org/。
【讨论】: