5

我正在用 Django 编写一个应用程序,让用户能够从我的网站嵌入视频。我正在为用户提供 iFrame 代码以嵌入视频。我发现这是不允许的。尝试这样做时,控制台会显示以下错误:

X-Frame-Options 拒绝加载:http: //blah.com/embed/110/不允许跨域框架。

经过大量研究,我发现了发生了什么。我的问题是:有人知道像 Youtube 和 Vimeo 这样的服务是如何解决这个问题的吗?

4

1 回答 1

14

有一个特殊的标头允许或禁止在 i-frame 中显示页面 -X-Frame-Options 它用于防止称为clickjacking的攻击。您可以查看有关它的 Django 文档https://docs.djangoproject.com/en/dev/ref/clickjacking/

希望其内容显示在 i-frame 中的站点只是不设置此标头。

我认为在您安装 Django 时,默认情况下会启用此保护。如果您不允许将您的内容嵌入 i-frames,您可以在整个站点的设置中禁用点击劫持保护,或者使用带有django.views.decorators.clickjacking装饰器的按视图控制:

  • xframe_options_exempt
  • xframe_options_deny
  • xframe_options_sameorigin

按视图控制是更好的选择。

于 2013-12-05T08:46:44.963 回答